基于 Python 制作俄罗斯方块小游戏
导语
上课的时候无聊写了个俄罗斯方块的小游戏(带 AI 的,用 pyqt5 写的),过来分享一波吧,因为最近没什么时间弄公众号,所以本着细水长流的原则,这里先分享游戏制作,过两天再分享利用简单的 AI 算法自动玩俄罗斯方块~
让我们愉快地开始吧~
开发工具
Python 版本:3.6.4
相关模块:
pyqt5 模块;
以及一些 Python 自带的模块。
环境搭建
安装 Python 并添加到环境变量,pip 安装需要的相关模块即可。
先睹为快
在 cmd 窗口运行" Game11.py "文件即可。
效果如下:
原理介绍
游戏规则:
由小方块组成的不同形状的板块陆续从屏幕上方落下来,玩家通过调整板块的位置和方向,使它们在屏幕底部拼出完整的一条或几条。这些完整的横条会随即消失,给新落下来的板块腾出空间,与此同时,玩家得到分数奖励。没有被消除掉的方块不断堆积起来,一旦堆到屏幕顶端,玩家便告输,游戏结束。( 摘自百度百科 )
控制方式:
←→ 键控制位置,↑ 键控制方向,空格键使板块快速下落到底部,P 键暂停游戏。
逐步实现:
Step1:定义一个俄罗斯方块
首先,我们来定义一个俄罗斯方块类,其具体作用为利用小方块组成不同形状的板块:
为了便于获取某个俄罗斯方块内各个小方块的位置信息,我们再来定义一些获取其位置信息的类内方法,如下图所示:
Step2:制作游戏主界面
我们将游戏进行中的数据记录与数据处理部分定义在内部板块类中,将游戏数据可视化定义在外部板块类中,具体实现如下。
(1)定义一个内部板块类:
我们可以在内部板块中操作当前可控制的俄罗斯方块向左/向右/向下(向下运动由系统自动操作)移动和快速坠落:
当然移动的时候要实时地判断当前可控制的俄罗斯方块是否已经“着陆”:
“着陆”后将当前可控制的俄罗斯方块并入到最下方那些不可再控制的俄罗斯方块中,并移除整行都有小方块的那些行(即完整的横条):
然后创建新的俄罗斯方块:
循环往复。
(2)定义一个外部板块类
其作用就是将内部板块类的实时数据信息用 pyqt5 模块实时地显示出来。
Step3:画个游戏侧面板
我们在游戏主界面右侧画个侧面板来实时地显示下一个俄罗斯方块的形状:
Step4:实现游戏主循环
定义俄罗斯方块游戏类并初始化:
其中游戏开始和游戏暂停的定义如下:
按键监听定义如下:
然后调用执行它就 OK 啦:
All Done!完整源代码详见相关文件。
参考文献
- 旅行社散客安排系统的设计与开发(电子科技大学·郭红梅)
- 移动游戏快速开发平台设计与实现(电子科技大学·赵懋骏)
- 教育类游戏《成语天地》的设计与开发(华中师范大学·龙艳)
- 基于ASP.NET开发技术的BBS论坛研究与设计(中国海洋大学·马章勤)
- 基于B/S结构的新闻发布系统(吉林大学·郭蕊)
- 网页游戏平台的管理与设计(哈尔滨师范大学·苏润泽)
- 基于网络爬虫的论坛数据分析系统的设计与实现(华中科技大学·黎曦)
- 网上论坛系统设计与实现(西安电子科技大学·胡秉玺)
- 基于SSH架构的个人空间交友网站的设计与实现(北京邮电大学·隋昕航)
- 基于B/S架构的酷跑社区系统的设计与实现(内蒙古大学·张晓乐)
- 基于ASP.NET开发技术的BBS论坛研究与设计(中国海洋大学·马章勤)
- 可定制电子商务系统的设计与实现(电子科技大学·薛健)
- 基于Python的非结构化数据检索系统的设计与实现(南京邮电大学·董海兰)
- 基于web的旅游服务平台的设计与实现(内蒙古大学·张凡)
- 基于.NET自定义控件的社区网站系统研究与实现(武汉理工大学·刘亚)
本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:毕设项目助手 ,原文地址:https://bishedaima.com/yuanma/36050.html