《Python游戏编程入门》的“轮询鼠标”内容介绍了通过轮询鼠标实现实时显示鼠标位置和按键状态的游戏。
1 游戏介绍
实时显示鼠标位置和按键状态的游戏如图1所示。
图1 实时显示鼠标位置和按键状态
从图1中可以看到,游戏界面主要分为上下两部分。其中,上半部分通过鼠标事件的方式获取并显示鼠标位置、移动距离、鼠标按键按下和释放的状态;下半部分通过“轮询鼠标”的方式获取并显示鼠标位置和鼠标按键状态。
2 游戏实现
2.1 通过鼠标事件的方式获取并显示鼠标信息
2.1.1 获取鼠标事件及鼠标信息
在“Pygame编程框架”的while True循环中,获取事件队列中的事件,并判断是否是鼠标事件,在《Python游戏编程入门注-第4章3中》提到,鼠标事件主要包括鼠标移动MOUSEMOTION、鼠标按键按下MOUSEBUTTONDOWN以及鼠标按键释放MOUSEBUTTONUP三种。代码如图2所示。
图2 获取鼠标事件及鼠标信息的代码
其中,mouse_x、mouse_y表示鼠标当前位置的衡中坐标;move_x、move_y表示鼠标移动的距离;mouse_down表示鼠标的哪个按键被按下;mouse_down_x、mouse_down_y表示鼠标按键被按下时位置的横纵坐标;mouse_up表示鼠标的哪个按键被释放;mouse_up_x、mouse_up_y表示鼠标按键被释放时位置的横纵坐标。以上变量在while True循环的外部定义,如图3所示。
图3 鼠标信息变量的定义
相关链接1 鼠标事件的相关知识请参考《Python游戏编程入门注-第4章3》。
2.1.2 显示鼠标信息
通过图4所示代码显示鼠标信息。
图4 显示鼠标信息的代码
其中,print_text()是自定义函数,用来在指定位置显示指定信息。以上代码可以实现图1中上半部分的功能。
注意1 图4所示代码在while True循环中,screen.fill()函数之后。
相关链接2 print_text()函数的相关内容请参考《Python游戏编程入门注-第2章1》。
2.2 通过“鼠标轮询”获取并显示鼠标信息
2.2.1 “鼠标轮询”获取并显示鼠标位置
“鼠标轮询”获取并显示鼠标位置的代码如图5所示。
图5 “鼠标轮询”获取并显示鼠标位置的代码
其中,第50行代码中的pygame.mouse模块中的get_pos()函数获取鼠标位置的横纵坐标,保存在x和y中;第51行代码显示获取到的数据。
2.2.2 “鼠标轮询”获取并显示鼠标按键信息
“鼠标轮询”获取并显示鼠标按键信息的代码如图6所示。
图6 “鼠标轮询”获取并显示鼠标按键信息的代码
其中,第52行中pygame.mouse模块中的get_pressed()函数获取鼠标的按键信息,保存在变量b1、b2和b3中。这三个变量分别表示鼠标左键、中键和右键的状态,按下键时,值是True,释放键时值是False。