毕业设计(论文)基于ARM的俄罗斯方块游戏的开发.doc

上传人:文库蛋蛋多 文档编号:2392961 上传时间:2023-02-17 格式:DOC 页数:34 大小:3.02MB
返回 下载 相关 举报
毕业设计(论文)基于ARM的俄罗斯方块游戏的开发.doc_第1页
第1页 / 共34页
毕业设计(论文)基于ARM的俄罗斯方块游戏的开发.doc_第2页
第2页 / 共34页
毕业设计(论文)基于ARM的俄罗斯方块游戏的开发.doc_第3页
第3页 / 共34页
毕业设计(论文)基于ARM的俄罗斯方块游戏的开发.doc_第4页
第4页 / 共34页
毕业设计(论文)基于ARM的俄罗斯方块游戏的开发.doc_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《毕业设计(论文)基于ARM的俄罗斯方块游戏的开发.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)基于ARM的俄罗斯方块游戏的开发.doc(34页珍藏版)》请在三一办公上搜索。

1、 学号: 常 州 大 学 毕业设计(论文)(2012届)题 目 学 生 学 院 专业班级 校内指导教师 专业技术职务 校外指导老师 专业技术职务 二一二年六月基于ARM的俄罗斯方块游戏的开发摘 要:随着现代化技术的高速发展,人们的生活已经离不开嵌入式了。在消费电子领域,嵌入式系统的游戏娱乐功能受到越来越多的关注。本课题是基于ARM微处理器S3C2440A硬件平台,设计并实现了俄罗斯方块游戏。系统的实现主要分为两个部分。首先,在PC机上安装qt creator开发软件,利用Qt的信号与槽、事件机制等技术,完成俄罗斯方块游戏程序的设计。程序设计的重点是实现方块的数据存储、移动旋转和消行等功能。然后

2、搭建Qt/Embedded开发环境,嵌入式交叉编译俄罗斯方块游戏程序生成可执行文件,并下载到ARM开发板mini2440上运行。 经过测试,整个系统性能良好,满足设计要求。俄罗斯方块游戏通过键盘进行操作,人机交互效率较高。界面美观大方,功能说明简单完整。研究方案跟进时代主流,具有重要的现实意义。关键词:嵌入式Linux、S3C2440A、Qt、俄罗斯方块The Development of Tetris Game Based on the ARMAbstract : With the rapid development of modern technology, peoples lives h

3、ave been inseparable from the embedded. The entertainment function of embedded system is paid more and more attention in consumer electronic application field.This paper designed and implemented Tetris game which is based on the ARM microprocessor S3C2440 hardware platform.The realization of the sys

4、tem is divided into two parts. First install the qt creator development software on a PC,and complete the design of Tetris game program with the techniques of Qts “signals and slots” and the event mechanism.The program focuses on the data storage of boxes and the functions of moving,rotation and rem

5、oving.Then build the development environment of Qt/Embedded ,embedded cross compile Tetris game program to generate an executable file which is downloaded to run on ARM development board mini2440. After testing,The system runs quite well and meet the design requirements. Tetris game is operated with

6、 a keyboard and the man-machine efficiency is very high.It has a pretty interface. The functional description is both simple and complete. Research approach keeps with the times and it has important practical significance.Key words: embedded Linux、S3C2440A、Qt、Tetris目录摘 要IABSTRACTII1绪论11.1 课题研究背景及国内外

7、研究现状11.2 课题的提出与意义21.3 解决问题的思路、方法以及取得成果22需求分析42.1 硬件需求42.1.1 嵌入式处理器42.1.2 开发板的选择52.2 软件需求62.2.2 Qt简介62.2.2 Qt Creator开发软件62.2.3 VMWare虚拟机72.2.4 Linux操作系统7 2.3 功能需求82.4 游戏界面需求92.5 方块图形需求103 系统设计113.1 qt creator安装与配置11 3.2 模块实现12 3.3 关键技术实现13 3.3.1 方块的数据结构13 3.3.2 方块的旋转和移动14 3.3.3 消行16 3.3.4 定时器实现17 3.

8、3.5 UI设计和游戏区域的绘制18 3.3.6 键盘处理214 移植和测试234.1 交叉编译工具安装234.2 交叉编译Qt/Embedded234.3 下载运行245 总结与展望285.1 总结285.2 展望28参 考 文 献29致 谢301 绪论1.1 课题研究背景及国内外研究现状嵌入式系统是当前发展最快最有前途的IT应用领域之一,嵌入式技术的发展正以前所未有的速度影响和改变着我们的生活。人们平常所熟知的手机、摄像机、游戏机、智能玩具、3D电视、医疗仪器、汽车电子、工业控制设备、航天航空设备等都有嵌入式系统。嵌入式系统是二十一世纪科技领域的重大创新,将推进全球经济社会高速发展。嵌入式

9、系统在硬件和软件交替发展的双螺旋的支撑下逐渐趋于稳定和成熟。作为一类特殊的计算机系统,主要由硬件平台、嵌入式操作系统和嵌入式应用程序构成。硬件平台包括嵌入式处理器和外围设备。嵌入式微处理器是嵌入式系统的核心部件,是控制、辅助系统运行的硬件单元,所以,嵌入式微处理器是决定嵌入式系统功能强弱的主要因素,也决定了嵌入式系统的应用范围和开发复杂度。ARM(Advanced RISC Machines)是微处理器行业的一家知名企业,设计了大量高性能、廉价、耗能低的RISC处理器、相关技术及软件,技术具有性能高、成本低和能耗省的特点3。到目前为止,ARM微处理器及技术的应用几乎已经深入到各个领域: (1)

10、工业控制领域:作为32位的RISC架构,基于ARM核的微控制器芯片不但占据了高端微控制器市场的大部分市场份额,同时也逐渐向低端微控制器应用领域扩展,ARM微控制器的低功耗、高性价比,向传统的8位/16位微控制器提出了挑战。 (2)无线通讯领域:目前已有超过85%的无线通讯设备采用了ARM技术,ARM以其高性能和低成本,在该领域的地位日益巩固。 (3)网络应用:随着宽带技术的推广,采用ARM技术的ADSL芯片正逐步获得竞争优势。此外,ARM在语音及视频处理上行了优化,并获得广泛支持,也对DSP的应用领域提出了挑战。 (4)消费类电子产品:ARM技术在目前流行的数字音频播放器、数字机顶盒和游戏机中

11、得到广泛采用。 (5)成像和安全产品:现在流行的数码相机和打印机中绝大部分采用ARM技术。手机中的32位SIM智能卡也采用了ARM技术。除此以外,ARM微处理器及技术还应用到许多不同的领域,并会在将来取得更加广泛的应用9。ARM的商业模式是开放的,任何厂商都可以购买授权,目前,总共有30家半导体公司与ARM签订了硬件技术使用许可协议,其中包括Intel、IBM、LG半导体、NEC、SONY、飞利浦和国家半导体这样的大公司。至于软件系统的合伙人,则包括微软、SUN和MRI等一系列知名公司。进入21世纪之后,由于手机制造行业的快速发展,出货量呈现爆炸式增长,ARM处理器占领了全球手机市场。由此可见

12、,ARM处理器还具有广阔的发展空间,将会不断影响和改变我们的生活。1.2 课题的提出与意义当前,ARM正在与包括Android在内的所有Linux联盟合作,致力于从芯片级至操作系统级两方面统一,降低产品的开发门槛。“ARM+Linux” 代表了未来的趋势,标准化的硬件+软件的组合,可以令更多OEM厂商愿意去做差异化设计。Linux是开放源代码的操作系统,直接带来的就是开发成本的降低。另外,Linux不仅在系统资源上占用率较低,在高性能运算上又能媲美Windows,而良好的可扩展性和可维护性也是其优势所在,所以,“ARM+Linux”毫无疑问成为了嵌入式开发的主流组合6。Qt是跨平台的应用程序和

13、UI框架。它包括跨平台类库、集成开发工具和跨平台 IDE。使用Qt,只需一次性开发应用程序,无须重新编写源代码,便可跨不同桌面和嵌入式操作系统部署这些应用程序。所以本设计采用先在PC机上实现应用程序的编写,再跨平台移植到ARM硬件平台上的方法来实现嵌入式应用程序的开发。俄罗斯方块(Tetris)是一款风靡全球的电视游戏机和掌上游戏机游戏,它由俄罗斯人阿列克谢帕基特诺夫发明,故得此名。俄罗斯方块的基本规则是移动、旋转和摆放游戏自动输出的各种方块,使之排列成完整的一行或多行并且消除得分。由于上手简单、老少皆宜,从而家喻户晓,风靡世界。俄罗斯方块曾经造成的轰动与造成的经济价值可以说是游戏史上的一件大

14、事,它看似简单但却变化无穷,令人上瘾。相信大多数用户都还记得为它痴迷得茶不思饭不想的那个俄罗斯方块时代。由于俄罗斯方块具有的数学性、动态性与知名度,也经常拿来作为游戏程序设计的练习题材。本设计选择开发“俄罗斯方块”游戏不仅具有技术上的可行性,而且开发成果也具有相当的现实意义。1.3 解决问题的思路、方法以及取得成果本设计的目的是在ARM开发板上运行“俄罗斯方块”游戏程序,而硬件平台选用的是Mini2440开发板,它采用了S3C2440微处理器,这款开发板低价实用,重要的是Mini2440开发板已经移植了基于Linux-2.6.32内核的嵌入式Linux操作系统,还提供了arm版本的QtE-4.

15、6.3,配合用户手册,可以快速入门。本设计的研究内容主要分为以下2个步骤:第一,鉴于Qt的跨平台特性,可以利用Qt的相关类库,选择在PC机上完成“俄罗斯方块”游戏程序的设计。本设计使用的是Windows版本的Qt Creator软件,根据官方描述,Qt Creator 的设计目标是使开发人员能够利用 Qt 这个应用程序框架更加快速及轻易的完成开发任务。游戏程序的设计需要解决几个关键的问题:方块的数据结构、方块的移动、碰撞和消行等。另外由于开发板屏幕分辨率为320*240,所以窗口界面的大小和布局要特别注意。游戏统一使用键盘操作,后续还可以扩展诸如计分,难度设置、颜色调节等等的功能。第二,由于P

16、C机是X86结构,Mini2440是ARM架构,所以设计好的游戏程序必须通过嵌入式交叉编译以后才能在开发板上运行。因此,嵌入式交叉编译环境的搭建成为了游戏移植过程的关键。QTEmbedded是NOKIA公司的图形化界面开发工具Qt的嵌入式版本,本设计采用的是4.5.2版本,配置环境需要在PC机Linux环境下,Linux系统可以通过虚拟机安装,方便快捷。交叉编译工具需要提前安装,选用的是Mini2440配套的arm-linux-gcc-4.3.2,接着下载对应Qt/Embedded源码包,解压以后要配置编译参数,编译源码的过程非常漫长,大概需要三个小时,之后设置环境变量,再通过嵌入式交叉编译俄

17、罗斯方块的游戏程序,将生成的目标文件下载到开发板上运行即可8。开发板外接USB接口键盘后,可以直接对游戏进行操作。2 需求分析2.1 硬件需求2.1.1 嵌入式处理器嵌入式处理器是嵌入式系统的核心,是控制、辅助系统运行的硬件单元。范围极其广阔,从最初的4位处理器,目前仍在大规模应用的8位单片机,到最新的受到广泛青睐的32位,64位嵌入式CPU。嵌入式处理器典型的特点就是工作稳定性高,功耗较小,对环境的适应能力强,体积小,且集成的功能较多。嵌入式处理器可以分成以下几类:(1)嵌入式微处理器 嵌入式微处理器是由通用计算机中的CPU演变而来的。它的特征是具有32位以上的处理器,具有较高的性能,当然其

18、价格也相应较高。但与计算机处理器不同的是,在实际嵌入式应用中,只保留和嵌入式应用紧密相关的功能硬件,去除其他的冗余功能部分,这样就以最低的功耗和资源实现嵌入式应用的特殊要求。和工业控制计算机相比,嵌入式微处理器具有体积小、重量轻、成本低、可靠性高的优点。(2)嵌入式微控制器 嵌入式微控制器的典型代表是单片机,从70年代末单片机出现到今天,虽然已经经过了20多年的历史,但这种8位的电子器件目前在嵌入式设备中仍然有着极其广泛的应用。单片机芯片内部集成ROM/EPROM、RAM、总线、总线逻辑、定时/计数器、看门狗、I/O、串行口、脉宽调制输出、A/D、D/A、Flash RAM、EEPROM等各种

19、必要功能和外设。和嵌入式微处理器相比,微控制器的最大特点是单片化,体积大大减小,从而使功耗和成本下降、可靠性提高。(3)嵌入式DSP处理器 DSP处理器是专门用于信号处理方面的处理器,其在系统结构和指令算法方面进行了特殊设计,具有很高的编译效率和指令的执行速度。在数字滤波、FFT、谱分析等各种仪器上DSP获得了大规模的应用。(4)SoC片上系统 SoC追求产品系统最大包容的集成器件,是目前嵌入式应用领域的热门话题之一。SOC最大的特点是成功实现了软硬件无缝结合,直接在处理器片内嵌入操作系统的代码模块。而且SOC具有极高的综合性,在一个硅片内部运用VHDL等硬件描述语言,实现一个复杂的系统。AR

20、M属于嵌入式微处理器的范畴,本文的研究目标是基于ARM的程序开发,所以本设计采用三星公司推出的16/32位RISC微处理器S3C2440A,它为手持设备和一般类型应用提供了低价格、低功耗、高性能小型微控制器的解决方案。为了降低整体系统成本,S3C2440A提供了一系列丰富的内部设备。S3C2440A采用了ARM920t的内核,0.13um的CMOS的标准宏单元和存储器单元。其低功耗,简单,优雅,且全静态设计特别适合于对成本和功率敏感型的应用。它采用了新的总线架构Advanced Micro controller Bus Architecture(AMBA)。S3C2440A的杰出特点是其核心处

21、理器(CPU),是一个由Advanced RISC Machines有限公司设计的16/32位ARM920T的RISC处理器。ARM920T实现了MMU,AMBA BUS和Harvard高速缓冲体系结构。这一结构具有独立的16KB指令Cache和16KB数据Cache。每个都是由具有8字长的行组成。通过提供一套完整的通用系统外设,S3C2440A减少整体系统成本和无需配置额外的组建。2.1.2 开发板的选择目前ARM开发板在市场上种类繁多,有多种型号与多家厂商可供选择,对于ARM的研究前提就是选择一个好的开发板来做开发和学习。Mini2440是一款真正低价实用的ARM9开发板,是目前国内性价比

22、最高的一款学习板;它采用Samsung S3C2440为微处理器,并采用专业稳定的CPU内核电源芯片和复位芯片来保证系统运行时的稳定性。mini2440的PCB采用沉金工艺的四层板设计,专业等长布线,保证关键信号线的信号完整性,生产采用机器贴片,批量生产;出厂时都经过严格的质量控制,配合用户手册,可以迅速掌握嵌入式 Linux和WinCE开发的流程,只要有C语言基础的人一般2周即可入门。目前提供的Linux和WindowsCE 5.0/6.0系统,在技术和功能上已经达到国内2440开发板中最高水平,它们各自的bootloader以及BSP均是100%开放的。Mini2440开发板的硬件资源主要

23、包含以下几个部分:(1)CPU 处理器 Samsung S3C2440A,主频400MHz,最高533Mhz 。(2)SDRAM 内存 64M SDRAM和32位数据总线。(3)FLASH 存储 均为掉电非易失的256M Nand Flash和2M Nor Flash。(4)LCD 显示 标准配置为统宝3.5寸真彩 LCD屏,型号为W35,分辨率240x320,带触摸屏。(5)接口和资源 主要配备了 1 个 100M 以太网RJ-45 接口(采用DM9000 网络芯片)、3 个串行口 、1 个USB Host 、1 个USB Slave B 型接口 、1 个 SD 卡存储接口 、系统时钟源和实

24、时时钟等等。(6)操作系统支持支持 Linux2.6.32.2 + Qtopia-2.2.0+QtE-4.6.1(独创双图形系统共存,无缝切换) 以及WindowsCE.NET 6.0(R3)。2.2 软件需求2.2.2 Qt简介 Qt拥有直观的的C+类库,Qt C+类库提供一套丰富的应用程序生成块,包含了构建高级跨平台应用程序所需的全部功能。具有直观,易学、易用,生成好理解、易维护的代码等特点7。 Qt还具有跨桌面和嵌入式操作系统的移植性,使用Qt,只需一次性开发应用程序,就可跨不同桌面和嵌入式操作系统进行部署,而无须重新编写源代码,可以说Qt无处不在。Qt有如下几个重要的特点: (1)使用

25、单一的源代码库定位多个操作系统; (2)通过重新利用代码可将代码跨设备进行部署; (3)无须考虑平台,可重新分配开发资源; (4)代码不受担忧平台更改影响的长远考虑 ; (5)使开发人员专注于构建软件的核心价值,而不是维护 API 。 Qt作为一种跨平台的图形界面开发平台,可以直接建立在简单的帧缓冲驱动上,并且有良好的可配置、可裁剪特性,因此也经常用在嵌入式系统上。Qt支持一般图形界面系统的由事件驱动的变成模型,并且支持特有的信号与槽的变成模型,应用非常灵活。Qt拥有丰富的API和大量的开发文档,对于用户开发来说是非常方便的。经常多年的发展,Qt已经不单纯是一个图形界面开发平台,它对应用变成的

26、各种领域(如网络、数据库等)都提供了自己的支持,功能非常强大。2.2.2 Qt Creator开发软件Qt Creator是跨平台的 Qt IDE, Qt Creator 是 Qt 被 Nokia 收购后推出的一款新的轻量级集成开发环境(IDE)。此 IDE 能够跨平台运行,支持的系统包括 Linux(32 位及 64 位)、Mac OS X 以及 Windows。在功能方面,Qt Creator 包括项目生成向导、高级的 C+ 代码编辑器、浏览文件及类的工具、集成了 Qt Designer、Qt Assistant、Qt Linguist、图形化的 GDB 调试前端,集成 qmake 构建工

27、具等。Qt Creator 主要是为了帮助新 Qt 用户更快速入门并运行项目,还可提高有经验的 Qt 开发人员的工作效率。它的优势主要有以下三个方面: 第一,使用强大的 C+ 代码编辑器可快速编写代码,语法标识和代码完成功能输入时进行静态代码检验以及提示样式上下文相关的帮助代码折叠括号匹配和括号选择模式高级编辑功能。 第二,使用浏览工具管理源代码,集成了领先的版本控制软件,包括 Git、Perforce 和 Subversion开放式文件,无须知晓确切的名称或位置搜索类和文件跨不同位置或文件沿用符号在头文件和源文件,或在声明和定义之间切换。 第三,为 Qt跨平台开发人员的需求而量身定制 ,集成

28、了特定于 Qt 的功能,如信号与槽 (Signals & Slots)图示调试器, 对 Qt 类结构可一目了然集成了 Qt Designer 可视化布局和格式构建器只需单击一下就可生成和运行 Qt 项目。2.2.3 VMWare虚拟机VMWare是一个虚拟PC软件,VMWare的产品可以使你在一台机器上同时运行二个或更多Windows、DOS、LINUX系统。与“多启动”系统相比,VMWare采用了完全不同的概念。多启动系统在一个时刻只能运行一个系统,在系统切换时需要重新启动机器。VMWare是真正“同时”运行,多个操作系统在主系统的平台上,就象标准Windows应用程序那样切换。而且每个操作

29、系统你都可以进行虚拟的分区、配置而不影响真实硬盘的数据,你甚至可以通过网卡将几台虚拟机用网卡连接为一个局域网,极其方便。安装在VMware操作系统性能上比直接安装在硬盘上的系统低不少,因此,比较适合学习和测试。VMware虚拟机中自带的一种增强工具VMware Tools,相当于VirtualBox中的增强功能(Sun VirtualBox Guest Additions),是VMware提供的增强虚拟显卡和硬盘性能、以及同步虚拟机与主机时钟的驱动程序。只有在VMware虚拟机中安装好了VMware Tools,才能实现主机与虚拟机之间的文件共享,同时可支持自由拖拽的功能,鼠标也可在虚拟机与主

30、机之前自由移动(不用再按ctrl+alt),且虚拟机屏幕也可实现全屏化。 VMware产品主要的功能有: (1)不需要分区或重开机就能在同一台PC上使用两种以上的操作系统。 (2)完全隔离并且保护不同OS的操作环境以及所有安装在OS上面的应用软件和资料。 (3)不同的OS之间还能互动操作,包括网络、周边、文件分享以及复制粘贴功能。 (4)有复原(Undo)功能。 (5)能够设定并且随时修改操作系统的操作环境,如:内存、磁碟空间、周边设备等等。 (6)热迁移,高可用性。本设计需要完成Qt/Embedded的环境搭建才能实现程序的跨平台移植,所以在计算机上还得安装Linux操作系统,通过VMwar

31、e安装Linux操作系统,能够在Windows系统和Linux系统之间自由切换,方便技术开发。2.2.4 Linux操作系统Linux是一个免费的操作系统,用户可以免费获得其源代码,并能够随意修改。Linux的内核稳定、功能强大、支持多种硬件平台、应用软件多、兼容性好:内核可根据需要任意裁减以及使用成本低的特点非常适合嵌入式应用。Linux凭借自身诸多优势,进军嵌入式这个IT产业的新的关键领域。嵌入式Linux操作系统适时地出现在各嵌入式厂商面前,吸引了许多开发商地目光,成为嵌入式操作系统的新宠。由此可见,嵌入式Linux在理论研究和实际应用中都具有重要意义。 RedHat是美国RedHat公

32、司的产品,是相当成功的一个Linux发行版本,也是目前使用最多的Linux发行版本。Red Hat最早由Bob Young和Marc Ewing在1995年创建。原来的Red Hat版本早已停止技术支持,目前Red Hat的Linux分为两个系列,其中一个是由Red Hat公司提供收费技术支持和更新的Red Hat Enterprise Linux系列;另一个是由社区开发的免费的Fedora Core系列。本设计在PC机上采用的Red Hat Enterprise Linux 5操作系统发布于1997年12月,它支持Intel、alpha和Sparc8平台和大多数的应用软件。极其简单易用的RP

33、M模块化的安装、配置和卸载工具,使程序的安装可在15分钟内完成。软件升级也很方便,这对刚开始使用Linux的用户来说是一大福音。嵌入式linux 是将Linux操作系统进行裁剪修改,使之能在嵌入式计算机系统上运行的一种操作系统。一个嵌入式Linux系统从软件的角度看通常分为引导加载程序BootLoader、Linux内核、文件系统和用户应用程序。Bootloader是系统加电后运行的第一段代码,目的是加载操作系统,Linux内核负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性,文件系统是操作系统中负责管理和存储文件信息的软件机构,这些都已经在ARM开发板上实现,

34、加上本设计完成的应用程序,就组成了一个完整嵌入式Linux系统。2.3 功能需求(1)基本功能:游戏区域顶部随机产生单个方块并下落,在此过程中通过操作方块的移动和旋转来进行游戏,直到方块填充到游戏区域底部并开始堆积。碰撞过程中检测到一行或多行完全填满,就将组成这些行的所有方块消除,同时增加积分。而不能消除的方块会一直堆积,如果方块堆积的高度达到游戏区域顶部,则宣布游戏结束。图2.1为俄罗斯方块游戏基本设计框图。(2)扩展功能:能够显示下一个将要出现的方块;自由选择难度,决定方块下落的速度;游戏随时可以暂停和恢复、或者重新开始;颜色可以随机变化以增强趣味性;“下”键可以自由调整,决定是直接下落到

35、底还是加速下移。图2.1俄罗斯方块游戏基本设计框图2.4 游戏界面需求良好的游戏界面可以增强游戏的魅力,所以界面布局至关重要。mini2440开发板标配的3.5寸触摸屏W35分辨率为320*240。本文将游戏区域设置宽高大小为100*200。最小单位为10*10的小方块。用网格线划分后使游戏区域清晰明目。方块在这个区域内进行移动和旋转等变化。默认白色背景,绿色方块填充色和黑色方块边框。其余地方除了一个位置,用来显示下一个将出现的方块,还有的则设置成分数显示、按键说明等等。2.5 方块图形需求使用数组存储方块7 种基本状态的数据结构,分别为田字形、长条形、Z 字形、反Z 形、7 字形、反7 形和

36、T 字型,如图2.2所示,每个方块都能够实现它的旋转变形,本设计采用的是逆时针旋转。田字形 长条形 Z 字形反Z 形 反7 形 7字形 T 字型图2.2 方块图3 系统设计3.1 qt creator安装与配置本设计的程序设计部分是在windows平台上来进行的,选用的开发软件是Qt Creator,安装程序为qt-creator-win-opensource-2.0.1.exe,而Qt的安装程序为qt-win-opensource-4.6.3-mingw.exe。首先安装Qt Creator,然后再安装Qt4.6.3,注意在安装Qt4.6.3时,要指定MinGW Installation目录

37、为Qt Creator安装目录下的mingw文件夹,如图3.1所示。图3.1 Qt4.6.3安装mingw目录选择安装完成以后还需要进行配置,如图3.2所示打开Qt Creator软件,选择“Tools|Options”,在“Qt4”选项中点击“添加按钮”,设置qmake location为Qt4.6.3安装目录下的binqmake.exe,然后点击OK完成qt creator环境的搭建。图3.2 qmake配置3.2 模块实现系统源文件布局如下:图3.3 源文件布局“俄罗斯方块”游戏的设计需要实现3个类,分别为MyItem、Widget和GameArea,还需要一个用户界面的设计文件widg

38、et.ui。MyItem类:定义了基本的7种方块类,除此之外还实现了几个重要的类成员函数,getItem()函数随机选取一个图形,使游戏能够不断地生成不同的图形,currentItem_endPos()函数返回当前图形在其4*4网格中的位置信息,方便对方块在整个游戏区域的位置进行处理,itemChange()函数实现了方块按逆时针旋转改变其形状。Widget类:实现了定时器和按键的功能,这个类是可以整合到GameArea类中的,本设计将其独立开来可以更好的实现控制功能。对应的主要类成员函数函数有三个:changeEvent()函数能够重绘游戏界面,当界面语言变化时就刷新界面显示。timer_u

39、pDate()函数实现定时器处理,一个是方块到底的溢出处理,一个是方块到顶游戏结束的溢出操作,keyPressEvent()函数定义各个按键的功能。GameArea类:这个类是游戏功能类,重点包括游戏算法实现,界面绘制实现等等,对应的主要功能函数如下:init_gameArea()游戏区域的初始化函数,用来设定游戏界面。init_Game()首次进入游戏对变量初始化。gameStart()游戏运行入口函数。draw_gameArea()绘制游戏区域,包括网格和游戏区的方块。draw_Grid()绘制游戏区域背景的网格。draw_currentMap()绘制游戏区域上存在的方块。draw_nex

40、tItem()显示下一个要出现的图形。GameArea:paintEvent(QPaintEvent *e) /重绘事件(才能显示图形)isMoveEnd()判断图形是否移动到了最下面或和别的图形重合了。isMoveLeft()是否到最左边或和别的图形重合了。isMoveRight()是否到最右边或和别的图形重合了。do_itemChange()对改变图形后超出窗口或和别的图形重合进行处理。clearRow()清除已满的行。widget.ui是在Qt Creator的QT界面编辑器里完成的,通过拖取很多的控件摆放在上面,然后设置相关属性等来实现,设计完成的图形文件最后会转为ui_widget.

41、h源码文件来进行程序编译。3.3 关键技术实现3.3.1 方块的数据结构游戏区域占据100(宽)*200(高)的界面空间,每个单元格以10为基本单位,方块得以在10*20的方阵中活动。按照游戏需求所述,方块共有7种基本形状,本设计使用一维数组存储方块的数据结构。“1”和“0”分别表示方块的填充和空白。详细存储方式如下所示: unsigned char item14*4=0,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0;/田字形unsigned char item24*4=0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1;/长条形unsigned char item3

42、4*4=0,0,1,0,0,1,1,0,0,1,0,0,0,0,0,0;Z字形unsigned char item44*4=0,1,0,0,0,1,1,0,0,0,1,0,0,0,0,0;/反Z形unsigned char item54*4=0,0,1,0,0,0,1,0,0,1,1,0,0,0,0,0;/反7形unsigned char item64*4=0,1,0,0,0,1,0,0,0,1,1,0,0,0,0,0;/7字形unsigned char item74*4=0,1,0,0,1,1,1,0,0,0,0,0,0,0,0,0;/T形游戏过程中,需要产生随机形状方块,这可以通过调用QT

43、库函数qrand()来实现,qsrand(time(0)配置随机种子,qrand()%7产生随机数。3.3.2 方块的旋转和移动本设计使用了一维数组0-15来表示4*4网格中的每个单元格,要求方块逆时针旋转90度,可以很容易得到旋转操作的算法。关键实现代码如下: for(int i=0;i4;i+) for(int j=0;j4;j+) *(tempItem +(3-j)*4+i)=*(currentItem +i*4+j);/坐标转换 i为行,j为列。由当前数组currentItem保存到临时数组tempItem中,方块在进行选择以后还要进行检测是否越界,左超界让其靠左,右操作让其靠右,此外

44、,下边超界意味着不能进行旋转操作,所以在进行旋转操作之前需要备份数组,然后恢复原图形。如图3.4是左侧越界调整示意图。图3.4 旋转方块左侧越界调整方块的移动有向下、向左和向右三个操作。重点就是检测方块是否与下、左、右边界或者其他图形重合。这里拿方块与左边界或者左边图形是否重合来说,首要解决的问题就是要得到当前方块在其所在的4*4网格中的位置信息,其中实现方块从左边向右数占用4*4网格第几列的关键代码如下所示:for(int col=0;col4;col+)for(int row=0;row4;row+)if(*(currentItem+row*4+col)/数组中有方块填充就返回列数retu

45、rn col;col为列,row为行,扫描整个4*4网格得到当前方块在最左边的位置item_endLeft。item_Col为4*4网格左边缘在整个100*200游戏区域中的位置,只要满足item_Col+item_endLeft0就可以确定当前方块与左边界或者左边图形碰撞重合了,如图3.5为方块左边界越界检测。下边和右边部分的检测实现方法是类似的。需要注意的是,因为定时器计时,方块自行向下移动,在检测左边和右边的同时都要一并检测是否与下边缘重合。左、右、下边发生重合情况都需要做处理以保证方块不越界,不同的是,检测到方块不能再向下移动的时候就要考虑是否消行计分了。图3.5 边界检测3.3.3 消行方块下落到底部或者与最下面的方块重合时,便要停止下移了,此时进行消行处理,消行的处理是从底向上扫描整张网格。这里使用了一个变量temp1

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号