基于Qt的俄罗斯方块的设计

上传人:夏** 文档编号:473674673 上传时间:2023-12-08 格式:DOC 页数:17 大小:132.50KB
返回 下载 相关 举报
基于Qt的俄罗斯方块的设计_第1页
第1页 / 共17页
基于Qt的俄罗斯方块的设计_第2页
第2页 / 共17页
基于Qt的俄罗斯方块的设计_第3页
第3页 / 共17页
基于Qt的俄罗斯方块的设计_第4页
第4页 / 共17页
基于Qt的俄罗斯方块的设计_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《基于Qt的俄罗斯方块的设计》由会员分享,可在线阅读,更多相关《基于Qt的俄罗斯方块的设计(17页珍藏版)》请在金锄头文库上搜索。

1、-华北水利水电大学课程设计报告基于Qt的俄罗斯方块的设计课程名称: 嵌入式系统 学 院: 信息工程 专 业: 电子信息工程 姓 名: 杨斌 学 号: 202115616 同 组 人:202115601王跃宇 指导教师: *晓华 日 期: 2021 .7.8 摘要俄罗斯方块是个比较经典的小游戏,它实现由四块正方形的色块组成,然后存储在一个数组的四个元素中,计算机随机产生不同七种类型的方块,根据计算机定时器控制它在一定的时间不停的产生,用户根据键盘的四个方向键控制翻转、向左、向右、向下和空格操作,用信号和槽函数的关联来实现对按键事件的控制。然后程序根据这七种方块堆叠成各种不同的模型。 Qt在源代码

2、级上实现了跨平台特性,极大的支持了跨平台通用软件的开发。Qt可以用同一个源程序在不同平台上编译,生成目标代码,并取得一样的运行效果,称为一次编写,随处编译,利用这种方法充分实现了程序的跨平台运行。这种基于源代码的跨平台特性不仅解决了性能的问题,而且可以发挥各个平台的优势,充分利用每个平台自身的特点;并且即可以在新环境下实现原有软件的功能和特点,减少开发费用,还可以改进原有软件的缺乏,增加新的需求,从而提高软件的质量,延长软件生命期。本次设计用到的开发工具是Qt by Digia v4.8.4MinGw 4.8.2 OpenSource,操作系统是windows 10,C+为开发语言。关键词QT

3、 槽函数 界面设计 算法 数组 程序设计. z.-摘要2关键词2引言 51、QT安装使用62、功能设计简介92.1 游戏功能92.2 设计思路103、游戏流程103.1 简述游戏运行流程103.2 运行流程图124、 功能实现134.1 Gui界面设计实现134.1.1 框图简述134.1.2 详细界面设计简述134.2 程序实现164.2.1 主要文件介绍164.2.2 初始化方块产生174.2.3 游戏进展阶段检测碰撞、旋转194.2.4 消除计分满行消除、计分205、运行结果216、课程设计总结22附录23程序代码23. z.-引言 Qt是跨平台的应用程序和UI框架。它包括跨平台类库、集

4、成开发工具和跨平台 IDE。使用Qt,只需一次性开发应用程序,无须重新编写源代码,便可跨不同桌面和嵌入式操作系统部署这些应用程序。 面向对像,Qt 的良好封装机制使得Qt的模块化程度非常高,可重用性较好,对于用户开发来说是非常方便的。 Qt 提供了一种称为 signals/slots的平安类型来替代callback,这使得各个元件之间的协同工作变得十分简单。 俄罗斯方块是一款风行全球的电视游戏机和掌上游戏机游戏,它曾经造成的轰动与造成的经济价值可以说是游戏史上的一件大事。俄罗斯方块游戏可以说是随计算机的开展而开展,并不断推陈出新演变出各种类似游戏,深受广阔玩家喜爱。这个游戏有的简单,有的复杂,

5、但其根本原理是一样的都是对运动的方块进展组合,来训练玩家的反响能力。俄罗斯方块最早还是出现在PC机上,而我国的用户都是通过红白机了解、喜欢上它的。现在QQ等游戏平台又将重新掀起这股让人沉迷的俄罗斯方块风潮。对一般用户来说,它的规则简单,容易上手,且游戏过程变化无穷,而在游戏平台上的对战模式更增加了它的娱乐性和挑战性,使用户既能感受到游戏中的乐趣,也给用户提供了一个展现自己高超技艺的场所。本设计利用数组作为方块的数据构造,提出一种用C语言和C+来实现的方法,实现根本的方块游戏功能,虽然不能实现联网对战功能,但是可以通过设计实现本游戏稳固所学知识,增强动手能力,了解并熟悉游戏软件的设计与开发过程。

6、1、QT安装使用1.1 QT安装 直接到QT官网.qt.io/download/下载QT,这里我们我们以后还要用到可以选择最新版本,用的是windows平台所以可以选择Qt 5.5.0 for Windows 32-bit (MinGW 4.9.2, 959 MB)(info)版本,下载完成后选择安装下面我们为了以前方便勾选所有的插件,安装完成后我们先不要运行需要在电脑配置里边添加变量,如下选择系统高级设置选择环境变量,在变量名path在变量名最后边添加QT安装的路径C:QtQt5.5.05.5mingw492_32注意:mingw492_32是QT安装的地方。至此,QT才可以完全的使用进展课

7、程设计。2、功能设计简介 条目 说明 设计名称基于QT设计的俄罗斯方块 设计目的实现俄罗斯方块游戏的运行 界面需求背景自定义图片、布局自定义、方块颜色变换、方块下落变形 方块形状需求随机产生7种形状方块、实现变形 键盘处理事件需求方块下落时,可通过键盘方向键上、下、左、右、空格键对该方块进展向上(变形),向下变形、向左、向右、向下移动。 鼠标处理事件需求鼠标右键点击界面相应按钮可以实现开场、暂停、退出功能 显示需求当不同的方块填满一行时可以消行,剩余方块向下移动并统计分数。当到达一定分数的时候,会增加相应的等级。2.1 游戏功能随机产生不同的形状长条形、Z字形、反Z形、田字形、7字形、反7形、

8、T字型下落到给定的区域,下落一个方块奖励7分,假设填满一行便消掉,相应区域计数,此时分数有奖励,每消一行奖励十分,当得分到达一定时,升级游戏难度,每关方块下落的速度不同,第一关默认下降速度500ms0.5s,以后每升级一次速度递加,增加游戏难度。假设在游戏中各形状填满了给定区域,游戏失败处于定格状态,此时可以重新开场游戏。游戏有暂停功能,当玩家点暂停按钮时,游戏暂停,再次点击暂停按钮,游戏继续。2.2 设计思路要实现俄罗斯方块这个小游戏,需要从一下几个方面入手。1. ui界面的设计,包括整个窗口的大小,布局,部件的添加。2. 修改界面,以及ui与主程序的关联3. 方块颜色的实现4. 随机7种方

9、块类型的产生,下一个方块的产生及显示,以及方块出现的位置5. 检测方块是否碰撞,以及如何下落6. 方块的旋转实现7. 出现方块时游戏计分,等级提升,下落速度的变化8. 满行时消除的检测实现9. 游戏完毕时游戏的停顿。10. 虚拟按键的支持3、游戏流程3.1 简述游戏运行流程1当按下开场go girl时随机产生7种方块类型中的一种,然后ne*t中出现的方块是和将要下落的方块同时出现。2要下落的方块随后检测碰撞,判断是否可以下落。下落时通过上下左右按键,调用函数改变坐标可以旋转方块,按空格键调用函数可以使方块加速下落。3每走一步都要检测碰撞,当下落道底部时,碰撞检测不能下落,此时在ne*t中的方块

10、开场下落,同时在随机产生另一个方块。4当一行满了之后,通过检测每一行的每一格是不是都有方块来判断是不是要消除,同时计分,等级,下落速度都随之相应的改变。5当方块到顶之后,将要下落的的哪一个方块检测是否碰撞,当检测不能下落时,游戏完毕。6)这里定义的是下落一个方块得七分,当得分为25的倍数的时候level升级,同时下落的速度初始为500ms,每升一级1000 / (1 + this.level)来运算。3.2 运行流程图 初始化随机生成*一类型方块否清行得分判断能否下落游戏完毕方块下落旋转移动放置方块是否检测满行去除检测碰撞是否越界是否到底否是4、 功能实现4.1 Gui界面设计实现4.1.1

11、框图简述1布局窗口大小、部件位置改变,部件添加删除、部件大小改变2添加文字在每一个按钮、部件添加文字3改变背景自定义背景添加4修改结果比照图片所示,表格阐述5难点问题解释Ui文件的调用、界面按钮与内部的连接4.1.2 详细界面设计简述利用QT中自带的Designer设计师来改变界面,翻开根文件夹下的.ui文件,并打破布局。1布局 通过拖拽可以改变窗口的大小,可通过拖拽左边的部件来添加部件。然后就可以按照自己喜欢的风格来改变各个部件的位置,大小。(2) 添加文字 各个部件的文字也可以通过双击来添加,改变文本内容,部件名称。(3) 改变窗口的背景 选择一个*自己喜欢的图片放在设计的文件目录下。然后

12、在Designer中往窗口里添加一个Push button部件,并右键选择放在后面。找到想要的背景图片放到根文件夹,然后在tetri*.qrc文件中添加一个指令并改成所要用如上图所示,然后选择Push button在其QWidget中选择style sheet添加选用的图片,然后在QWidget中选择geonetry选择需要的尺寸大小这里我们选择720*570.并拖动主界面到一样的大小。然后在根目录文件翻开main.cpp文件并修改成一样的尺寸。最后选择保存。就完成了界面背景和尺寸大小的修改。4设计结果和例如中的窗口界面进展比照方以下图,如上比照,实现了如下的改变1布局窗口大小、部件位置改变,

13、部件添加删除、部件大小改变2添加文字在每一个按钮、部件添加文字3改变背景自定义背景添加,修改成自己喜爱的背景。一共有四个按钮,分别实现暂停,开场,退出,调试。游戏运行界面。5设计过程中发现的难点 虽然很简便的利用Designer设计出了界面,但是其中的原理才是难点。1,实现界面背景的改变是我们自己琢磨出来的方法,也不知道对不对,但是对于显示出来的界面是很好的,难点就是添加图片的路径和stylesheet的利用 2,ui文件如何被调用的 利用ui界面作为一个子对象,完成对子对象的构造之后调用stepUi来实现。3. 按钮的点击如何与内部实现连接每一个按钮对应不同的功能,每一个功能的实现都有一个槽

14、函数与其对应。不如当你按下pause这个按钮时,在tetri*window.js这个文件中ui.findChild(pauseButton).clicked.connect(this.board, this.board.pause);槽函数接口,实现按钮的点击,连接这个函数调用在tetri*board.js中,如图的函数,从而实现按钮与内部功能的连接。4.2 程序实现4.2.1 主要文件介绍 程序主要有几个文件,main.cpp相当于入口、.h文件是头文件、.js文件介绍具体调用函数以及功能的实现、Debug中产生最终可执行文件、Makefile文件进展编译、.ui界面设计文件。4.2.2 初始化方块产生 大致分为几个主要模块函数来实现功能。随机方块的产生、检测是否碰撞下落、检测满行消除、方块的旋转。 随机其中方块的产生、满行消除、重点介绍一下,检测碰撞、方块的旋转概述一下。New pieceShape产生四个组成形状的小方块随机产生0到7的随机数流程图: 绘制方块图形确定方块产生位置程序文字简述:这个函数的目的是产生用于构造大方块的四

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号