有意思→举例:python和pygame游戏编程入门

在接下来,我们就来举例:将鼠标的事件引入到这个动画中,要做什么呢?也就是说,在动画中,如果你按下鼠标左键,球就会停止移动,如果你松开左键,球就会移动到鼠标的位置,然后继续刚才的运动;如果你按鼠标左键,移动鼠标,球会跟着鼠标移动,感觉鼠标在拖动同一个球,鼠标松开,球在前面继续移动。

分析:

1、如果你按下鼠标左键,球就会停止移动

(1)确定鼠标按事件:event.type==pygame.MOUSEBUTTONDOWN。

怎么知道它是左键还是右键?

event.button = 鼠标按下键编号 (取值为整数,左键为1,右键为3)

(2)让球停止移动,这很简单,我们需要在主循环中创建一个新变量isstop=false,如果isstop==true,则停止执行这个小对象的move()方法。

2、如果松开左键,球就会移动到鼠标的位置,然后继续刚才的动作。

(I)鼠标松开事件;event.type==pygame.MOUSEBUTTONUP

(2)球向鼠标移动并继续移动。继续移动很简单,只需将前一个变量istop设置为false即可。

(3)如何移动到鼠标?这里您需要进行一个简单的计算,如图所示


坐标x,y是从球的左边和顶部到球体的距离( ballrect.left,ballrect.top),以及鼠标的当前坐标(event.pos[0],event.pos[1]),因此小球要到鼠标的位置就要在x方向上移动event.pos[0] - ballrect.left;y周方向移动event.pos[1] - ballrect.top。

3、如果按下鼠标左键不放,移动鼠标,小球就会跟随鼠标移动

(1)判断鼠标移动移动事件event.type == pygame.MOUSEMOTION

(2)进一步判断是哪个键被按下,event.buttons[0,0,0] 对应鼠标的三个键,鼠标移动时,这三个件处于按下状态,对应的位置值为1

(3)球移动到鼠标位置,与第二部分完全相同。

4、控制小球暂停还是运动

在监视监视器是否处于活动状态以控制游戏是否暂停的代码中,添加一个条件来监视isstop是否暂停,并找到ifpygame.display.get_active(),以更改为:if pygame.display.get_active() and not isstop:

完整的程序代码:


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容