admin管理员组文章数量:1794759
《Python游戏趣味编程》 第6章 见缝插针
6 见缝插针 Python游戏开发
图书简介可以看这里:
童晶:《Python游戏趣味编程》新书上架了本章我们将编写一个见缝插针的游戏。按下空格键后发射一根针到圆盘上,所有发射的针跟着圆盘逆时针方向转动;如果新发射的针碰到已有的针,游戏结束。
首先我们进行圆盘与针图片的显示、针的转动及旋转中心的设置;其次定义列表存储多根针的信,实现多根针的发射、转动与失败判断;最后学习游戏信的显示、音效的添加。
本章案例最终代码一共49行,代码参看:配套资源\\第6章\\6-8.py,视频效果参看:配套资源\\第6章\\见缝插针.mp4。
import pgzrun # 导入游戏库 TITLE = 'Python见缝插针 --- by 童晶' # 导入初始位置针的图片、设置锚点相对坐标 startNeedle = Actor('needle', anchor=(170+50, 1)) startNeedle.x = 200 # 设置针锚点的x坐标 startNeedle.y = 300 # 设置针锚点的y坐标 needles = [] # 存储所有针的列表,开始为空 rotateSpeed = 1 # 旋转速度,默认是1,后面游戏结束后改成0 score = 0 # 游戏得分 def draw(): # 绘制模块,每帧重复执行 screen.fill('white') # 白色背景 startNeedle.draw() # 初始位置针的绘制 for needle in needles: # 绘制列表中每根针 needle.draw() # 绘制针 screen.draw.filled_circle((400, 300), 80, 'red') # 绘制圆盘 screen.draw.text(str(score), (50, 250), fontsize=50, color='green') # 显示游戏得分 if rotateSpeed == 0: # 游戏失败 screen.draw.text("Game Over!", (10, 320), fontsize=35, color='red') def update(): # 更新模块,每帧重复操作 for needle in needles: # 对列表中每根针遍历处理 needle.angle = needle.angle + rotateSpeed # 针的角度增加,即慢慢旋转 def on_key_down(): # 当按下任意键盘键时执行 global rotateSpeed, score if rotateSpeed >0: # 播放音效 music.play_once('弹簧') # 再新建一根针 newNeedle = Actor('needle', anchor=(170+50, 1)) newNeedle.x = 400 # 设置针锚点的x坐标 newNeedle.y = 300 # 设置针锚点的y坐标 for needle in needles: if newNeedle.colliderect(needle): # 新针和其他针碰撞,游戏失败 print('游戏失败') rotateSpeed = 0 # 游戏失败,针停止旋转 music.play_once('溜走') if rotateSpeed > 0: # 如果针还在旋转 score = score + 1 # 得分加1 needles.append(newNeedle) # 把新针加入列表中 pgzrun.go() # 开始执行游戏分步骤代码、图片音效素材、讲解视频可以从异步社区下载:
www.epubit/bookDetails?id=UB72096d97d6149分步骤代码也可以直接从这里下载:
联想Filez
这一章主要讲解了图片旋转的实现、多张图片列表的使用、游戏音效的播放等功能,学习了if-elif-else和input语句。应用if选择判断、for循环、列表等语法知识,实现了见缝插针游戏。读者可以在本章代码基础上继续改进:
1. 随着游戏的进行,针的旋转速度越来越快,游戏难度越来越大;
2. 中间显示为第三章的同心圆,同心圆每被针射中一次,换一次随机颜色;
3. 尝试在画面右边新增一位玩家,实现双人版的见缝插针游戏。
读者也可以参考本章的开发思路,尝试设计并分步骤实现旋转炮台射击气球的小游戏。
版权声明:本文标题:《Python游戏趣味编程》 第6章 见缝插针 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686837447a108617.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论