弹球游戏python鼠标控制_用python和pygame游戏编程入门-弹球[鼠标控制]

本节我们再将鼠标的事件引入到这个动画中,要做什么呢?就是在动画中,如果按下鼠标左键,小球会停止移动,如果松开左键,小球会移动到鼠标的位置,然后继续刚才的运动;如果按下鼠标左键不放,移动鼠标,小球就会跟随鼠标移动,感觉是鼠标在拖动小球一样,鼠标松开,小球继续之前的运动。

分解:

一、如果按下鼠标左键,小球会停止移动

(1)判断鼠标按下事件:event.type == pygame.MOUSEBUTTONDOWN

怎么知道是左键还是右键?event.button = 鼠标按下键编号 (取值为整数,左键为1,右键为3)

(2)让小球停止运动,这个怎么做,其实很简单,我们需要新建一个变量isstop=False,在主循环中,如果isstop==true我们就停止执行小球对象的move()方法即可。

二、如果松开左键,小球会移动到鼠标的位置,然后继续刚才的运动

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

(2)小球移动到鼠标,继续运动。继续运动很简单,只要将我们上一步的变量isstop设置为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。

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

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

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

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

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

在监视显示器是否是活动状态来控制游戏是否暂停还是继续的代码处,增加一个监视isstop是否暂停的条件,找到if pygame.display.get_active(),修改为:if pygame.display.get_active() and not isstop:

完整的程序代码:

本站内容未经许可,禁止任何网站及个人进行转载。

你可能感兴趣的:(弹球游戏python鼠标控制)