基于 Python 制作俄罗斯方块小游戏

基于 Python 制作俄罗斯方块小游戏 导语 上课的时候无聊写了个俄罗斯方块的小游戏(带 AI 的,用 pyqt5 写的),过来分享一波吧,因为最近没什么时间弄公众号

本文包含相关资料包-----> 点击直达获取<-------

基于 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://m.bishedaima.com/yuanma/36050.html

相关推荐

  • Python分析中国大陆各直辖市及各省省会的平均工资与平均房价

    Python分析中国大陆各直辖市及各省省会的平均工资与平均房价 研究目的 近期网络上关于“躺平”的争论很多,但可以看出支持“躺平”的多是以90后为主的年轻人
    2024年05月14日
    4 1 1
  • python + dlib 进行人脸识别

    python人脸识别 人脸识别的主要算法 其核心算法是 欧式距离算法使用该算法计算两张脸的面部特征差异,一般在0,6 以下都可以被认为是同一张脸 人脸识别的主要步骤 1 获得人脸图片 2 将人脸图片转为128D的矩阵(这个也就是人脸特征的一种数字化表现) 3 保存人脸128D的特征到文件中 4 获取其他人脸转为128D特征通过欧式距离算法与我们保存的特征对比
    2024年05月14日
    2 1 1
  • JSP实现基于Lucene框架的实时全文检索系统

    JSP实现基于Lucene框架的实时全文检索系统 摘 要 全文检索技术是现代信息检索的核心技术,它能够根据数据资料的内容而不是外在特征来进行信息检索
    2024年05月14日
    3 1 1
  • 基于SpringBoot框架的周边游旅游平台

    这是一套采用🔥🔥SpringBoot为核心的短途旅行平台源代码,主要编程语言为Java,并结合了SpringBoot和Vue,js技术栈,开发工具可以选择Idea或Eclipse
    2024年05月23日
    5 1 2
  • 基于SSM框架的快递管理系统源码

    使用SSM框架(SpringMVC + Spring + MyBatis)开发快递管理系统是当前互联网技术领域的一个重要研究方向,随着电子商务的兴起和快递业务的不断扩大
    2024年05月07日
    6 1 1
  • JAVA Web 中文乱码问题

    JAVA Web 中文乱码问题 本人初学,如有问题欢迎指正 教材《Java Web程序设计(第3版)》主编:郭克华,第8章 JSP内置对象(2)P129-P131 所示代码 : java //获得书名 String book=request
    2024年05月14日
    5 1 1
  • Pythonweb之工资管理系统

    软件工程课程设计实验报告 一,项目开发 引言 编写目的 为了保证项目团队按时保质地完成项目目标,便于项目团队成员更好地了解项目情况,使项目工作开展的各个过程合理有序
    2024年05月14日
    26 1 8
  • SSH体育场馆预定网站源码(javaee+mysql)

    SSH体育场馆预定网站源码(javaee+mysql) 基于SSH框架(spring+struts2+hibernate+mysql)实现的体育场馆预定管理系统是当今数字化社会的必然需求之一
    2024年05月07日
    4 1 2
  • 基于.net的超市收银系统源码

    在当前数字化时代,超市已成为人们日常购物的主要场所之一,为了提高超市收银效率和管理水平,研发一款高效稳定的超市收银系统具有重要意义,本研究旨在基于,net技术开发一款超市收银系统
    2024年05月07日
    3 1 1
  • 基于Python实现简历智能推荐算法

    摘 要 目前,越来越多不同特点的应聘者和越来越细化的岗位之间,存在巨大的信息不对称,因此高效,准确的将合适的人推荐到合适的岗位,有很大的实际意义,本文针对这一工程实践问题
    2024年05月14日
    4 1 1

发表回复

登录后才能评论