趣学Python游戏编程
上QQ阅读APP看书,第一时间看更新

2.3.1 处理鼠标单击事件

可是程序如何知道玩家是否单击了鼠标呢?Pgzero早已帮我们解决了这个问题,它会自动检测鼠标的单击动作。

说明:

事实上,大多数高级语言都是基于某种事件处理机制来应对用户的输入操作,例如鼠标单击或按键按下等常见操作。具体来说,鼠标单击或按键按下操作被称为一个“事件”,而事件发生后程序采取的应对措施则被称为“事件处理”。事件的检测和处理通常是程序内部自动进行的,编程者无须考虑事件的处理过程,只需告诉程序事件发生后要执行什么操作就可以了。

我们希望玩家用鼠标单击图片块后,能够将其移动。那么又该如何告诉程序单击鼠标后进行移动操作呢?对于这个问题,Pgzero也提供了方便的解决办法,即提供一个on_mouse_down()函数来处理鼠标单击事件。具体来说,将鼠标单击后要执行的操作代码写入该函数中,则当鼠标单击事件发生后,程序便会自动执行该函数中的操作。

为了获取鼠标事件的具体信息,on_mouse_down()函数还提供了两个参数,分别是pos和button,前者表示鼠标单击处的坐标值,后者表示鼠标的按键值。在拼图游戏中,只需使用pos参数即可。需要注意的是,pos其实是一个元组类型的变量,它包含两个数值:pos[0]表示鼠标单击处的水平坐标;pos[1]表示鼠标单击处的垂直坐标。当鼠标单击事件发生时,程序会自动地把单击处的坐标值保存在pos元组中。可以编写下面的代码测试一下:

运行一下程序,然后在程序窗口中单击鼠标,Mu编辑器的下方便会输出单击处的坐标值。

现在程序能够响应鼠标单击操作了,可是如何在鼠标单击图片块后让它移动呢?首先选中鼠标所单击的图片块,然后看看它能否移动,如果可以则改变它的位置。