基于ARM的俄罗斯方块游戏的开发.docx
《基于ARM的俄罗斯方块游戏的开发.docx》由会员分享,可在线阅读,更多相关《基于ARM的俄罗斯方块游戏的开发.docx(38页珍藏版)》请在冰豆网上搜索。
基于ARM的俄罗斯方块游戏的开发
学号:
常州大学
毕业设计(论文)
(2012届)
题目
学生
学院专业班级
校内指导教师专业技术职务
校外指导老师专业技术职务
二○一二年六月
基于ARM的俄罗斯方块游戏的开发
摘要:
随着现代化技术的高速发展,人们的生活已经离不开嵌入式了。
在消费电子领域,嵌入式系统的游戏娱乐功能受到越来越多的关注。
本课题是基于ARM微处理器S3C2440A硬件平台,设计并实现了俄罗斯方块游戏。
系统的实现主要分为两个部分。
首先,在PC机上安装qtcreator开发软件,利用Qt的信号与槽、事件机制等技术,完成俄罗斯方块游戏程序的设计。
程序设计的重点是实现方块的数据存储、移动旋转和消行等功能。
然后搭建Qt/Embedded开发环境,嵌入式交叉编译俄罗斯方块游戏程序生成可执行文件,并下载到ARM开发板mini2440上运行。
经过测试,整个系统性能良好,满足设计要求。
俄罗斯方块游戏通过键盘进行操作,人机交互效率较高。
界面美观大方,功能说明简单完整。
研究方案跟进时代主流,具有重要的现实意义。
关键词:
嵌入式Linux、S3C2440A、Qt、俄罗斯方块
TheDevelopmentofTetrisGameBasedontheARM
Abstract:
Withtherapiddevelopmentofmoderntechnology,people'sliveshavebeeninseparablefromtheembedded.Theentertainmentfunctionofembeddedsystemispaidmoreandmoreattentioninconsumerelectronicapplicationfield.ThispaperdesignedandimplementedTetrisgamewhichisbasedontheARMmicroprocessorS3C2440hardwareplatform.
Therealizationofthesystemisdividedintotwoparts.FirstinstalltheqtcreatordevelopmentsoftwareonaPC,andcompletethedesignofTetrisgameprogramwiththetechniquesofQt's“signalsandslots”andtheeventmechanism.Theprogramfocusesonthedatastorageofboxesandthefunctionsofmoving,rotationandremoving.ThenbuildthedevelopmentenvironmentofQt/Embedded,embeddedcrosscompileTetrisgameprogramtogenerateanexecutablefilewhichisdownloadedtorunonARMdevelopmentboardmini2440.
Aftertesting,Thesystemrunsquitewellandmeetthedesignrequirements.Tetrisgameisoperatedwithakeyboardandtheman-machineefficiencyisveryhigh.Ithasaprettyinterface.Thefunctionaldescriptionisbothsimpleandcomplete.Researchapproachkeepswiththetimesandithasimportantpracticalsignificance.
Keywords:
embeddedLinux、S3C2440A、Qt、Tetris
1绪论
1.1课题研究背景及国内外研究现状
嵌入式系统是当前发展最快最有前途的IT应用领域之一,嵌入式技术的发展正以前所未有的速度影响和改变着我们的生活。
人们平常所熟知的手机、摄像机、游戏机、智能玩具、3D电视、医疗仪器、汽车电子、工业控制设备、航天航空设备等都有嵌入式系统。
嵌入式系统是二十一世纪科技领域的重大创新,将推进全球经济社会高速发展。
嵌入式系统在硬件和软件交替发展的双螺旋的支撑下逐渐趋于稳定和成熟。
作为一类特殊的计算机系统,主要由硬件平台、嵌入式操作系统和嵌入式应用程序构成。
硬件平台包括嵌入式处理器和外围设备。
嵌入式微处理器是嵌入式系统的核心部件,是控制、辅助系统运行的硬件单元,所以,嵌入式微处理器是决定嵌入式系统功能强弱的主要因素,也决定了嵌入式系统的应用范围和开发复杂度。
ARM(AdvancedRISCMachines)是微处理器行业的一家知名企业,设计了大量高性能、廉价、耗能低的RISC处理器、相关技术及软件,技术具有性能高、成本低和能耗省的特点[3]。
到目前为止,ARM微处理器及技术的应用几乎已经深入到各个领域:
(1)工业控制领域:
作为32位的RISC架构,基于ARM核的微控制器芯片不但占据了高端微控制器市场的大部分市场份额,同时也逐渐向低端微控制器应用领域扩展,ARM微控制器的低功耗、高性价比,向传统的8位/16位微控制器提出了挑战。
(2)无线通讯领域:
目前已有超过85%的无线通讯设备采用了ARM技术,ARM以其高性能和低成本,在该领域的地位日益巩固。
(3)网络应用:
随着宽带技术的推广,采用ARM技术的ADSL芯片正逐步获得竞争优势。
此外,ARM在语音及视频处理上行了优化,并获得广泛支持,也对DSP的应用领域提出了挑战。
(4)消费类电子产品:
ARM技术在目前流行的数字音频播放器、数字机顶盒和游戏机中得到广泛采用。
(5)成像和安全产品:
现在流行的数码相机和打印机中绝大部分采用ARM技术。
手机中的32位SIM智能卡也采用了ARM技术。
除此以外,ARM微处理器及技术还应用到许多不同的领域,并会在将来取得更加广泛的应用[9]。
ARM的商业模式是开放的,任何厂商都可以购买授权,目前,总共有30家半导体公司与ARM签订了硬件技术使用许可协议,其中包括Intel、IBM、LG半导体、NEC、SONY、飞利浦和国家半导体这样的大公司。
至于软件系统的合伙人,则包括微软、SUN和MRI等一系列知名公司。
进入21世纪之后,由于手机制造行业的快速发展,出货量呈现爆炸式增长,ARM处理器占领了全球手机市场。
由此可见,ARM处理器还具有广阔的发展空间,将会不断影响和改变我们的生活。
1.2课题的提出与意义
当前,ARM正在与包括Android在内的所有Linux联盟合作,致力于从芯片级至操作系统级两方面统一,降低产品的开发门槛。
“ARM+Linux”代表了未来的趋势,标准化的硬件+软件的组合,可以令更多OEM厂商愿意去做差异化设计。
Linux是开放源代码的操作系统,直接带来的就是开发成本的降低。
另外,Linux不仅在系统资源上占用率较低,在高性能运算上又能媲美Windows,而良好的可扩展性和可维护性也是其优势所在,所以,“ARM+Linux”毫无疑问成为了嵌入式开发的主流组合[6]。
Qt是跨平台的应用程序和UI框架。
它包括跨平台类库、集成开发工具和跨平台IDE。
使用Qt,只需一次性开发应用程序,无须重新编写源代码,便可跨不同桌面和嵌入式操作系统部署这些应用程序。
所以本设计采用先在PC机上实现应用程序的编写,再跨平台移植到ARM硬件平台上的方法来实现嵌入式应用程序的开发。
俄罗斯方块(Tetris)是一款风靡全球的电视游戏机和掌上游戏机游戏,它由俄罗斯人阿列克谢·帕基特诺夫发明,故得此名。
俄罗斯方块的基本规则是移动、旋转和摆放游戏自动输出的各种方块,使之排列成完整的一行或多行并且消除得分。
由于上手简单、老少皆宜,从而家喻户晓,风靡世界。
俄罗斯方块曾经造成的轰动与造成的经济价值可以说是游戏史上的一件大事,它看似简单但却变化无穷,令人上瘾。
相信大多数用户都还记得为它痴迷得茶不思饭不想的那个俄罗斯方块时代。
由于俄罗斯方块具有的数学性、动态性与知名度,也经常拿来作为游戏程序设计的练习题材。
本设计选择开发“俄罗斯方块”游戏不仅具有技术上的可行性,而且开发成果也具有相当的现实意义。
1.3解决问题的思路、方法以及取得成果
本设计的目的是在ARM开发板上运行“俄罗斯方块”游戏程序,而硬件平台选用的是Mini2440开发板,它采用了S3C2440微处理器,这款开发板低价实用,重要的是Mini2440开发板已经移植了基于Linux-2.6.32内核的嵌入式Linux操作系统,还提供了arm版本的QtE-4.6.3,配合用户手册,可以快速入门。
本设计的研究内容主要分为以下2个步骤:
第一,鉴于Qt的跨平台特性,可以利用Qt的相关类库,选择在PC机上完成“俄罗斯方块”游戏程序的设计。
本设计使用的是Windows版本的QtCreator软件,根据官方描述,QtCreator的设计目标是使开发人员能够利用Qt这个应用程序框架更加快速及轻易的完成开发任务。
游戏程序的设计需要解决几个关键的问题:
方块的数据结构、方块的移动、碰撞和消行等。
另外由于开发板屏幕分辨率为320*240,所以窗口界面的大小和布局要特别注意。
游戏统一使用键盘操作,后续还可以扩展诸如计分,难度设置、颜色调节等等的功能。
第二,由于PC机是X86结构,Mini2440是ARM架构,所以设计好的游戏程序必须通过嵌入式交叉编译以后才能在开发板上运行。
因此,嵌入式交叉编译环境的搭建成为了游戏移植过程的关键。
QT\Embedded是NOKIA公司的图形化界面开发工具Qt的嵌入式版本,本设计采用的是4.5.2版本,配置环境需要在PC机Linux环境下,Linux系统可以通过虚拟机安装,方便快捷。
交叉编译工具需要提前安装,选用的是Mini2440配套的arm-linux-gcc-4.3.2,接着下载对应Qt/Embedded源码包,解压以后要配置编译参数,编译源码的过程非常漫长,大概需要三个小时,之后设置环境变量,再通过嵌入式交叉编译俄罗斯方块的游戏程序,将生成的目标文件下载到开发板上运行即可[8]。
开发板外接USB接口键盘后,可以直接对游戏进行操作。
2需求分析
2.1硬件需求
2.1.1嵌入式处理器
嵌入式处理器是嵌入式系统的核心,是控制、辅助系统运行的硬件单元。
范围极其广阔,从最初的4位处理器,目前仍在大规模应用的8位单片机,到最新的受到广泛青睐的32位,64位嵌入式CPU。
嵌入式处理器典型的特点就是工作稳定性高,功耗较小,对环境的适应能力强,体积小,且集成的功能较多。
嵌入式处理器可以分成以下几类:
(1)嵌入式微处理器
嵌入式微处理器是由通用计算机中的CPU演变而来的。
它的特征是具有32位以上的处理器,具有较高的性能,当然其价格也相应较高。
但与计算机处理器不同的是,在实际嵌入式应用中,只保留和嵌入式应用紧密相关的功能硬件,去除其他的冗余功能部分,这样就以最低的功耗和资源实现嵌入式应用的特殊要求。
和工业控制计算机相比,嵌入式微处理器具有体积小、重量轻、成本低、可靠性高的优点。
(2)嵌入式微控制器
嵌入式微控制器的典型代表是单片机,从70年代末单片机出现到今天,虽然已经经过了20多年的历史,但这种8位的电子器件目前在嵌入式设备中仍然有着极其广泛的应用。
单片机芯片内部集成ROM/EPROM、RAM、总线、总线逻辑、定时/计数器、看门狗、I/O、串行口、脉宽调制输出、A/D、D/A、FlashRAM、EEPROM等各种必要功能和外设。
和嵌入式微处理器相比,微控制器的最大特点是单片化,体积大大减小,从而使功耗和成本下降、可靠性提高。
(3)嵌入式DSP处理器
DSP处理器是专门用于信号处理方面的处理器,其在系统结构和指令算法方面进行了特殊设计,具有很高的编译效率和指令的执行速度。
在数字滤波、FFT、谱分析等各种仪器上DSP获得了大规模的应用。
(4)SoC片上系统
SoC追求产品系统最大包容的集成器件,是目前嵌入式应用领域的热门话题之一。
SOC最大的特点是成功实现了软硬件无缝结合,直接在处理器片内嵌入操作系统的代码模块。
而且SOC具有极高的综合性,在一个硅片内部运用VHDL等硬件描述语言,实现一个复杂的系统。
ARM属于嵌入式微处理器的范畴,本文的研究目标是基于ARM的程序开发,所以本设计采用三星公司推出的16/32位RISC微处理器S3C2440A,它为手持设备和一般类型应用提供了低价格、低功耗、高性能小型微控制器的解决方案。
为了降低整体系统成本,S3C2440A提供了一系列丰富的内部设备。
S3C2440A采用了ARM920t的内核,0.13um的CMOS的标准宏单元和存储器单元。
其低功耗,简单,优雅,且全静态设计特别适合于对成本和功率敏感型的应用。
它采用了新的总线架构AdvancedMicrocontrollerBusArchitecture(AMBA)。
S3C2440A的杰出特点是其核心处理器(CPU),是一个由AdvancedRISCMachines有限公司设计的16/32位ARM920T的RISC处理器。
ARM920T实现了MMU,AMBABUS和Harvard高速缓冲体系结构。
这一结构具有独立的16KB指令Cache和16KB数据Cache。
每个都是由具有8字长的行组成。
通过提供一套完整的通用系统外设,S3C2440A减少整体系统成本和无需配置额外的组建。
2.1.2开发板的选择
目前ARM开发板在市场上种类繁多,有多种型号与多家厂商可供选择,对于ARM的研究前提就是选择一个好的开发板来做开发和学习。
Mini2440是一款真正低价实用的ARM9开发板,是目前国内性价比最高的一款学习板;它采用SamsungS3C2440为微处理器,并采用专业稳定的CPU内核电源芯片和复位芯片来保证系统运行时的稳定性。
mini2440的PCB采用沉金工艺的四层板设计,专业等长布线,保证关键信号线的信号完整性,生产采用机器贴片,批量生产;出厂时都经过严格的质量控制,配合用户手册,可以迅速掌握嵌入式Linux和WinCE开发的流程,只要有C语言基础的人一般2周即可入门。
目前提供的Linux和WindowsCE5.0/6.0系统,在技术和功能上已经达到国内2440开发板中最高水平,它们各自的bootloader以及BSP均是100%开放的。
Mini2440开发板的硬件资源主要包含以下几个部分:
(1)CPU处理器
SamsungS3C2440A,主频400MHz,最高533Mhz。
(2)SDRAM内存
64MSDRAM和32位数据总线。
(3)FLASH存储
均为掉电非易失的256MNandFlash和2MNorFlash。
(4)LCD显示
标准配置为统宝3.5寸真彩LCD屏,型号为W35,分辨率240x320,带触摸屏。
(5)接口和资源
主要配备了1个100M以太网RJ-45接口(采用DM9000网络芯片)、3个串行口、1个USBHost、1个USBSlaveB型接口、1个SD卡存储接口、系统时钟源和实时时钟等等。
(6)操作系统支持
支持Linux2.6.32.2+Qtopia-2.2.0+QtE-4.6.1(独创双图形系统共存,无缝切换)以及WindowsCE.NET6.0(R3)。
2.2软件需求
2.2.2Qt简介
Qt拥有直观的的C++类库,QtC++类库提供一套丰富的应用程序生成块,包含了构建高级跨平台应用程序所需的全部功能。
具有直观,易学、易用,生成好理解、易维护的代码等特点[7]。
Qt还具有跨桌面和嵌入式操作系统的移植性,使用Qt,只需一次性开发应用程序,就可跨不同桌面和嵌入式操作系统进行部署,而无须重新编写源代码,可以说Qt无处不在。
Qt有如下几个重要的特点:
(1)使用单一的源代码库定位多个操作系统;
(2)通过重新利用代码可将代码跨设备进行部署;
(3)无须考虑平台,可重新分配开发资源;
(4)代码不受担忧平台更改影响的长远考虑;
(5)使开发人员专注于构建软件的核心价值,而不是维护API。
Qt作为一种跨平台的图形界面开发平台,可以直接建立在简单的帧缓冲驱动上,并且有良好的可配置、可裁剪特性,因此也经常用在嵌入式系统上。
Qt支持一般图形界面系统的由事件驱动的变成模型,并且支持特有的信号与槽的变成模型,应用非常灵活。
Qt拥有丰富的API和大量的开发文档,对于用户开发来说是非常方便的。
经常多年的发展,Qt已经不单纯是一个图形界面开发平台,它对应用变成的各种领域(如网络、数据库等)都提供了自己的支持,功能非常强大。
2.2.2QtCreator开发软件
QtCreator是跨平台的QtIDE,QtCreator是Qt被Nokia收购后推出的一款新的轻量级集成开发环境(IDE)。
此IDE能够跨平台运行,支持的系统包括Linux(32位及64位)、MacOSX以及Windows。
在功能方面,QtCreator包括项目生成向导、高级的C++代码编辑器、浏览文件及类的工具、集成了QtDesigner、QtAssistant、QtLinguist、图形化的GDB调试前端,集成qmake构建工具等。
QtCreator主要是为了帮助新Qt用户更快速入门并运行项目,还可提高有经验的Qt开发人员的工作效率。
它的优势主要有以下三个方面:
第一,使用强大的C++代码编辑器可快速编写代码,语法标识和代码完成功能输入时进行静态代码检验以及提示样式上下文相关的帮助代码折叠括号匹配和括号选择模式高级编辑功能。
第二,使用浏览工具管理源代码,集成了领先的版本控制软件,包括Git、Perforce和Subversion开放式文件,无须知晓确切的名称或位置搜索类和文件跨不同位置或文件沿用符号在头文件和源文件,或在声明和定义之间切换。
第三,为Qt跨平台开发人员的需求而量身定制,集成了特定于Qt的功能,如信号与槽(Signals&Slots)图示调试器,对Qt类结构可一目了然集成了QtDesigner可视化布局和格式构建器只需单击一下就可生成和运行Qt项目。
2.2.3VMWare虚拟机
VMWare是一个虚拟PC软件,VMWare的产品可以使你在一台机器上同时运行二个或更多Windows、DOS、LINUX系统。
与“多启动”系统相比,VMWare采用了完全不同的概念。
多启动系统在一个时刻只能运行一个系统,在系统切换时需要重新启动机器。
VMWare是真正“同时”运行,多个操作系统在主系统的平台上,就象标准Windows应用程序那样切换。
而且每个操作系统你都可以进行虚拟的分区、配置而不影响真实硬盘的数据,你甚至可以通过网卡将几台虚拟机用网卡连接为一个局域网,极其方便。
安装在VMware操作系统性能上比直接安装在硬盘上的系统低不少,因此,比较适合学习和测试。
VMware虚拟机中自带的一种增强工具VMwareTools,相当于VirtualBox中的增强功能(SunVirtualBoxGuestAdditions),是VMware提供的增强虚拟显卡和硬盘性能、以及同步虚拟机与主机时钟的驱动程序。
只有在VMware虚拟机中安装好了VMwareTools,才能实现主机与虚拟机之间的文件共享,同时可支持自由拖拽的功能,鼠标也可在虚拟机与主机之前自由移动(不用再按ctrl+alt),且虚拟机屏幕也可实现全屏化。
VMware产品主要的功能有:
(1)不需要分区或重开机就能在同一台PC上使用两种以上的操作系统。
(2)完全隔离并且保护不同OS的操作环境以及所有安装在OS上面的应用软件和资料。
(3)不同的OS之间还能互动操作,包括网络、周边、文件分享以及复制粘贴功能。
(4)有复原(Undo)功能。
(5)能够设定并且随时修改操作系统的操作环境,如:
内存、磁碟空间、周边设备等等。
(6)热迁移,高可用性。
本设计需要完成Qt/Embedded的环境搭建才能实现程序的跨平台移植,所以在计算机上还得安装Linux操作系统,通过VMware安装Linux操作系统,能够在Windows系统和Linux系统之间自由切换,方便技术开发。
2.2.4Linux操作系统
Linux是一个免费的操作系统,用户可以免费获得其源代码,并能够随意修改。
Linux的内核稳定、功能强大、支持多种硬件平台、应用软件多、兼容性好:
内核可根据需要任意裁减以及使用成本低的特点非常适合嵌入式应用。
Linux凭借自身诸多优势,进军嵌入式这个IT产业的新的关键领域。
嵌入式Linux操作系统适时地出现在各嵌入式厂商面前,吸引了许多开发商地目光,成为嵌入式操作系统的新宠。
由此可见,嵌入式Linux在理论研究和实际应用中都具有重要意义。
RedHat是美国RedHat公司的产品,是相当成功的一个Linux发行版本,也是目前使用最多的Linux发行版本。
RedHat最早由BobYoung和MarcEwing在1995年创建。
原来的RedHat版本早已停止技术支持,目前RedHat的Linux分为两个系列,其中一个是由RedHat公司提供收费技术支持和更新的RedHatEnterpriseLinux系列;另一个是由社区开发的免费的FedoraCore系列。
本设计在PC机上采用的RedHatEnterpriseLinux5操作系统发布于1997年12月,它支持Intel、alpha和Sparc8平台和大多数的应用软件。
极其简单易用的RPM模块化的安装、配置和卸载工具,使程序的安装可在15分钟内完成。
软件升级也很方便,这对刚开始使用Linux的用户来说是一大福音。
嵌入式linux是将Linux操作系统进行裁剪修改,使之能在嵌入式计算机系统上运行的一种操作系统。
一个嵌入式Linux系统从软件的角度看通常分为引导加载程序BootLoader、Linux内核、文件系统和用户应用程序。
Bootloader是系统加电后运行的第一段代码,目的是加载操作系统,Linux内核负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性,文件系统是操作系统中负责管理和存储文件信息的软件机构,这些都已经在ARM开发板上实现,加上本设计完成的应用程序,就组成了一个完整嵌入式Linux系统。
2.3功能需求
(1)基本功能:
游戏区域顶部随机产生单个方块并下落,在此过程中通过操作方块的移动和旋转来进行游戏,直到方块填充到游戏区域底部并开始堆积。
碰撞过程中检测到一行或多行完全填满,就将组成这些行的所有方块消除,同时增加积分。
而不能消除的方块会一直堆积,如果方块堆积的高度达到游戏区域顶部,则宣布游戏结束。
图2.1为俄罗斯方块游戏基本设计框图。
(2)扩展功能:
能够显示下一个将要出现的方块;自由选择难度,决定方块下落的速度;游戏随时可