《Python游戏编程入门》注-第二章5

2 监听键盘按键

Pie游戏运行后,当玩家按下"1-4"这四个数字按键,会在相应位置绘制"饼"。因此,游戏需要对键盘按键进行监听,代码如图7所示。

图7 监听键盘按键

其中,第22行的for循环用于获取事件信息,第23-25行代码表示当用户点击了游戏窗口右上角的"关闭"按钮时,游戏退出;第26行代码表示当玩家按下了键盘按键,KEYUP表示按键弹起(按键按下后就会弹起);第27-37行对玩家按下的按键进行判断,pygame.K_ESCAPE表示键盘中的"Esc"按键,K_1、K_2、K_3和K_4分别表示键盘上"1-4"数字键;piece1、piece2、piece3和piece4表示"1-4"数字键被按下的标志,True表示按下,False表示没有按下,这四个变量在while True之前定义,代码如图8所示。

图8 按键标志的定义

3 响应键盘按键

当玩家按下不同按键时,游戏应该进行不同的响应,即对应"1-4"四个数字键,绘制不同的"饼",绘制"饼"就相当于绘制一个90度的"弧形"以及"弧形"的两条边(绘制"线条")。该代码如图9所示。

图9 响应键盘按键的代码

其中,四个if语句分别判断"1-4"四个数字键是否被按下;第54-59代码对应数字"1"被按下后的响应;第55-56行定义了绘制"弧形"的起始弧度和结束弧度,第57-59行代码分别用来绘制"弧形"和其两个边,"弧形"和"线条"所需的坐标如图10所示。

图10 "弧形"和"线条"坐标

图10所示的代码中表示位置、宽度和颜色的变量定义代码如图11所示。

图11 变量定义

相关链接2 绘制"弧形"和绘制"线条"的方法请参考《Python游戏编程入门注-第2章2》《Python游戏编程入门注-第2章3》

注意4 图9所示的代码位置在while True中。

注意5 图11所示的代码位置在while True之前。

4 改变"饼"的颜色

当4个"饼"都画完后,改变"饼"的颜色,代码如图12所示。

图12 改变"饼"颜色的代码

其中,piece1、piece2、piece3和piece4表示"1-4"数字键被按下的标志,数字键按下,则说明对应的"饼"已经画完。当这四个变量均为True时,表示当4个"饼"都画完,此时将表示"饼"颜色的变量color进行修改。

注意6 图12 所示的代码位置在while True中。

注意7 完整代码请在《Python游戏编程入门注-第2章1》中提到的地址中下载。

相关推荐
曲幽16 分钟前
FastAPI分布式系统实战:拆解分布式系统中常见问题及解决方案
redis·python·fastapi·web·httpx·lock·asyncio
孟健15 小时前
Karpathy 用 200 行纯 Python 从零实现 GPT:代码逐行解析
python
码路飞17 小时前
写了个 AI 聊天页面,被 5 种流式格式折腾了一整天 😭
javascript·python
曲幽19 小时前
FastAPI压力测试实战:Locust模拟真实用户并发及优化建议
python·fastapi·web·locust·asyncio·test·uvicorn·workers
敏编程1 天前
一天一个Python库:jsonschema - JSON 数据验证利器
python
前端付豪1 天前
LangChain记忆:通过Memory记住上次的对话细节
人工智能·python·langchain
databook1 天前
ManimCE v0.20.1 发布:LaTeX 渲染修复与动画稳定性提升
python·动效
xiezhr1 天前
米哈游36岁程序员被曝复工当晚猝死出租屋内
游戏·程序员·游戏开发
花酒锄作田2 天前
使用 pkgutil 实现动态插件系统
python
前端付豪2 天前
LangChain链 写一篇完美推文?用SequencialChain链接不同的组件
人工智能·python·langchain