基于51单片机的俄罗斯方块游戏论文.doc_第1页
基于51单片机的俄罗斯方块游戏论文.doc_第2页
基于51单片机的俄罗斯方块游戏论文.doc_第3页
基于51单片机的俄罗斯方块游戏论文.doc_第4页
基于51单片机的俄罗斯方块游戏论文.doc_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2011203讲师曾繁忠南物理与电子信息工程系07106171232007级电气工程及其自动化基于单片机的俄罗斯方块游戏设计基于单片机的俄罗斯方块游戏设计独 创 性 声 明本人郑重声明:所呈交的毕业论文(设计)是本人在指导老师指导下取得的研究成果。除了文中特别加以注释和致谢的地方外,论文(设计)中不包含其他人已经发表或撰写的研究成果。与本研究成果相关的所有人所做出的任何贡献均已在论文(设计)中作了明确的说明并表示了谢意。矚慫润厲钐瘗睞枥庑赖。签名: 年月日授权声明本人完全理解贺州学院有关保留、使用本科生毕业论文(设计)的规定,即:学院有权保留并向国家有关部门或机构送交毕业论文(设计)的复印件和磁盘,允许毕业论文(设计)被查阅和借阅。本人授权贺州学院可以将毕业论文(设计)的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存、汇编论文(设计)。聞創沟燴鐺險爱氇谴净。本人论文(设计)中有原创性数据需要保密的部分为(如没有,请填写“无”):签 名: 年月日指导教师签名: 年月日基于单片机的俄罗斯方块游戏设计摘 要俄罗斯方块是一款风靡全球的益智游戏。它规则简单,容易上手,且游戏过程变化无穷,使用户在游戏中得到乐趣。残骛楼諍锩瀨濟溆塹籟。本文讨论了一种基于增强型单片机硬件平台和实时操作系统的智能俄罗斯方块游戏的设计与实现。该设计选用的处理器型号为STC12C5A60S2的单片机,实时操作系统采用适用于8051处理器的RTX51 Tiny多任务实时操作系统。重点从软件工程角度论述了俄罗斯方块模型构造,图形旋转,坐标变换,双人游戏中多任务实时操作的设计法方,以及背景音乐的处理等技术。同时,该设计的独创性是在8051系列单片机中使用操作系统实现了双人游戏和音效的添加。酽锕极額閉镇桧猪訣锥。关键词:单片机;RTX51;LCD;俄罗斯方块ABSTRACTTetris is a section became popular in the world of puzzles.The rules are simple, easy to operate and the game process changes.Users in the game to get fun.彈贸摄尔霁毙攬砖卤庑。This paper discussed a method based on enhanece microcontroller hardware platform and real-time operating system of intelligent Tetris game of design and implementa- tion.This design multi-back STC12C5A60S2 single-chip processor regult and real-time operating system adopt suitable for the 8051 processor RTX51 of multi-tasking real- time operating system.This paper mainly discusses the from software engineering tetris model of structure,graphics rotation,coordinate transform,the double game multitasking real-time operating design,and the background music of the formation of technology.At the same time,the design originality in the 8051series micro- controller is used in the operating system realizing double game and sound add.謀荞抟箧飆鐸怼类蒋薔。Key words: singlechip;RTX51;LCD;TetrisI目 录摘 要I厦礴恳蹒骈時盡继價骚。ABSTRACTII茕桢广鳓鯡选块网羈泪。1 绪 论1鹅娅尽損鹌惨歷茏鴛賴。1.1 课题背景1籟丛妈羥为贍偾蛏练淨。1.2 课题的主要研究内容1預頌圣鉉儐歲龈讶骅籴。1.3 课题的研究现状及意义1渗釤呛俨匀谔鱉调硯錦。2 系统硬件平台设计2铙誅卧泻噦圣骋贶頂廡。2.1 STC12C5A60S2单片机概述2擁締凤袜备訊顎轮烂蔷。2.2 STC12C5A60S2最小系统3贓熱俣阃歲匱阊邺镓騷。2.3 电源系统3坛摶乡囂忏蒌鍥铃氈淚。2.4 振荡电路3蜡變黲癟報伥铉锚鈰赘。2.5 复位系统4買鲷鴯譖昙膚遙闫撷凄。2.6 程序下载系统5綾镝鯛駕櫬鹕踪韦辚糴。2.7 音乐播放系统6驅踬髏彦浃绥譎饴憂锦。2.8 LCD液晶显示接口电路6猫虿驢绘燈鮒诛髅貺庑。2.9 操作控制接口7锹籁饗迳琐筆襖鸥娅薔。3 系统软件平台构建8構氽頑黉碩饨荠龈话骛。3.1 Vision简介8輒峄陽檉簖疖網儂號泶。3.2 LCD12864液晶屏显示原理8尧侧閆繭絳闕绚勵蜆贅。3.2.1 LCD模块总线选择及时序8识饒鎂錕缢灩筧嚌俨淒。3.2.2 LCD显示RAM区映射概况9凍鈹鋨劳臘锴痫婦胫籴。3.2.3 LCD的驱动方法10恥諤銪灭萦欢煬鞏鹜錦。3.2.4 LCD驱动程序架构10鯊腎鑰诎褳鉀沩懼統庫。3.3 俄罗斯方块游戏设计11硕癘鄴颃诌攆檸攜驤蔹。3.3.1 俄罗斯方块游戏功能简介11阌擻輳嬪諫迁择楨秘騖。3.3.2 系统界面的设计12氬嚕躑竄贸恳彈瀘颔澩。3.3.3 游戏系统“枚举算法”概述14釷鹆資贏車贖孙滅獅赘。3.3.4 俄罗斯方块造型设计的方法15怂阐譜鯪迳導嘯畫長凉。3.3.5 随机产生俄罗斯方块的方法15谚辞調担鈧谄动禪泻類。3.3.6 俄罗斯方块平移的实现方法17嘰觐詿缧铴嗫偽純铪锩。3.3.7 俄罗斯方块旋转的实现方法18熒绐譏钲鏌觶鷹緇機库。3.3.8 俄罗斯方块下移的实现方法20鶼渍螻偉阅劍鲰腎邏蘞。3.3.9 满行检测及消行功能的实现方法21纣忧蔣氳頑莶驅藥悯骛。3.3.10 游戏积分的计算方法22颖刍莖蛺饽亿顿裊赔泷。3.4 双人俄罗斯方块游戏设计24濫驂膽閉驟羥闈詔寢賻。3.4.1 RTX51 Tiny简介24銚銻縵哜鳗鸿锓謎諏涼。3.4.2 RTX51 Tiny的内核分析24挤貼綬电麥结鈺贖哓类。3.4.3 游戏开发环境的配置27赔荊紳谘侖驟辽輩袜錈。3.4.4 双人单机对战模式的实现流程28塤礙籟馐决穩賽釙冊庫。3.5 系统背景音乐的设计28裊樣祕廬廂颤谚鍘羋蔺。3.5.1音乐的设计原理28仓嫗盤紲嘱珑詁鍬齊驁。3.5.2 音乐播放的实现方法30绽萬璉轆娛閬蛏鬮绾瀧。3.5.3 音效程序流程30骁顾燁鶚巯瀆蕪領鲡赙。3.6 系统主程序流程图31瑣钋濺暧惲锟缟馭篩凉。4 产品功能说明与系统性能测试32鎦诗涇艳损楼紲鯗餳類。4.1 产品功能说明32栉缏歐锄棗鈕种鵑瑶锬。4.2 系统性能测试33辔烨棟剛殓攬瑤丽阄应。5 结束语33峴扬斕滾澗辐滠兴渙藺。参考文献35詩叁撻訥烬忧毀厉鋨骜。致 谢III贺州学院本科生毕业论文(设计)1 绪 论1.1 课题背景如今,计算机系统的发展已明显地朝三个方向发展,这三个方向就是:巨型化,单片化,网络化。对于解决复杂计算和高速数据处理的问题仍然是巨型机在起作用,因而,目前巨型机正在朝高速及高处理能力的方向发展。单片机在出现时Intel公司就给其单片机取名为嵌入式微控制器4。单片机的最明显的优势,就是可以嵌入到各种仪器、设备中。这一点是巨型机和网络不可能做到的。单片机在内部已集成了趆来趆多的部件,这些部件包括一般常用的电路,例如:定时器,比较器,EEPROM,D/A转换器,串行通信接口,Watchdog电路等。则鯤愜韋瘓賈晖园栋泷。 同时,俄罗斯方块是一款风靡全球的电视游戏机和掌上游戏机游戏,目前在网络单机游戏和kele8等上都有它的身影。而它曾经造成的轰动与经济价值可以说是游戏史上一件大事。因此,对它的研究,无论从技术上,还是社会意义上看都是很有价值的。胀鏝彈奥秘孫戶孪钇賻。单片机在游戏上的应用是具有非常大的潜力的,它能将游戏带入到另一个阶段。此次设计仅仅是为了举一个单片机在游戏应用方面的简单例子,它可以很好的说明单片机功能的强大,体现其更高的可控性和高集成度的好处,因此它可以在电子游戏方面成为一个不可计量的明日之星。鳃躋峽祷紉诵帮废掃減。1.2 课题的主要研究内容本课题研究和实现了基于8051+RTX51到Tiny平台下的智能俄罗斯方块游戏系统。主要研究内容是实现智能俄罗斯方块游戏系统软硬件平台的搭建;本系统以8051微处理器为核心来运行RTX51 Tiny多任务实时操作系统,利用KEIL C51开发工具进行软件开发,通过LCD12864液晶屏显示游戏界面。该设计能实现单人单机游、双人单机对战游戏、游戏背景音乐的播放和单人最高积分存储等功能。稟虛嬪赈维哜妝扩踴粜。在俄罗斯方块游戏系统开发过程中,本文作者首先进行硬件平台的搭建,包括单片机最小系统的搭建、电源系统的搭建、串口下载器的设计、游戏手柄的设计、音效播放模块的设计以及LCD液晶显示接口的设计。然后,作者才开展软件平台的构建,这也是本设计的重要部分,主要包括对RTX51 Tiny操作系统的配置、俄罗斯方块模型的设计、模型图块的旋转及坐标变换设计、双人单机对战游戏设计和音效系统设计等。最后,从硬件和软件两方面对完成的智能俄罗斯方块游戏系统进行调试及运行试验。陽簍埡鲑罷規呜旧岿錟。1.3 课题的研究现状及意义现今国内外的俄罗斯方块游戏设计主要有基于PC机上Windows平台的俄罗斯方块游戏、基于手机平台的智能俄罗斯方块游戏以及基于单片机平台的俄罗斯方块游戏等。前两种属于高端游机,性能优越,但成本高,而且计算机编程已不是新命题,VB、VC、Delphi版本的俄罗斯方块游戏都有发布9。沩氣嘮戇苌鑿鑿槠谔應。从学术角度来看,针对俄罗斯方块游戏的开发,国内外也有不少学者展开过研究,比如Niko将进化算法引入到俄罗斯方块中并验证了其有效性,Hoogeboom探讨了俄罗斯方块游戏的构造问题,王宇等针对存在于俄罗斯方块中的两个数学问题提出解决方案,高凌琴探讨游戏功能要求、数据结构、图形旋转、坐标变换等关键技术,胡代弟在SPCE061A单片机实现了俄罗斯方块游戏10。钡嵐縣緱虜荣产涛團蔺。综上,国内外的研究多着重于游戏数学原理的讨论,也有部分文献涉及游戏的具体实现,但多是在Windows操作系统下实现的,在单片机平台下的开发俄罗斯方块游戏鲜少有文献刊载。而单片机由于具有体积小、性能突出、价格低廉等特点,应用领域不断扩大,除了工业控制、智能化仪表、家用电器外,在智能化高档电子玩具产品也大量采用单片机芯片作为核心控制部件。曾经80年代非常流行的掌上游戏机便是单片机在电子玩具中的应用之一,其中的俄罗斯方块游戏现已被我们所熟知。懨俠劑鈍触乐鹇烬觶騮。本文探讨基于8051单片机硬件平台和RTX51 Tiny多任务实时操作系统的俄罗斯方块游戏的设计与实现,将理论与实践相结合。其主要目标是再现经典的俄罗斯方块游戏,并在此基础上实现双人单机对战游戏模式,以丰富产品功能,增强游戏的趣味性。謾饱兗争詣繚鮐癞别瀘。2 系统硬件平台设计2.1 STC12C5A60S2单片机概述STC12C5A60S2系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速、低功耗、超强抗干扰的新一代8051系列单片机,指令代码完全兼容传统8051,但速度快812倍。用户程序空间为60KB,片上集成1280字节RAM,具有EEPROM功能,能够额外储蓄1KB的数据。该单片机共有4个16位定时器,两个与传统8051兼容的定时器/计数器,即16位定时器T0和T1,没有定时器2,但有独立波特率发生器做串行通讯的波特率发生器,再加上2路PCA模块可由T0的溢出在P3.4/T0输出时钟,可由T1的溢出在P3.5/T1输出时钟,此两路可编程计数器阵列(PCA)可用来再实现2个定时器。此外,STC12C5A60S2内部还集成MAX810专用复位电路,2路PWM,8路高速度10位A/D转换(250K/S),针对电机控制,强干扰场地合。呙铉們欤谦鸪饺竞荡赚。综上所述,STC12C5A605S2单片机具有许多强大的功能,能够满足大多数用户对8位单片机的要求。2.2 STC12C5A60S2最小系统单片机最小系统主要由电源、振荡、复位电路以及扩展电路等部分组成。在本设计中,扩展了液晶显示接口。因此,本设计的最小系统如图2-1所示。莹谐龌蕲賞组靄绉嚴减。图 2-1 STC12C5A60S2最小系统Fig 2-1 STC12C5A60S2 Minimum System2.3 电源系统本设计的电源系统比较简单,直接由LM7805稳压芯片输出的+5V电源供电。具体电路如图2-2所示。图片2-2 电源系统Fig 2-2 Power System2.4 振荡电路单片机系统里都有振荡电路,在单片机系统里晶振作用非常大,全称叫晶体振荡器,它结合单片机内部电路产生单片机所需的时钟频率,单片机晶振提供的时钟频率趆高,那么单片机运行速度就趆快,单片机的一切指令执行都是依靠单片机晶振提供的时钟频率。4麸肃鹏镟轿騍镣缚縟糶。晶振通常与锁相环电路配合使用,以提供系统所需的时钟频率。本设计中STC12C5A60S2使用12MHz的晶体振荡器作为振荡源,由于单片机内部带有振荡电路,所以外部只要连接一个晶振和两个电容即可,电容容量一般在15pF至50pF之间。如图2-3所示即为本设计的振荡电路。納畴鳗吶鄖禎銣腻鰲锬。图 2-3 振荡电路Fig 2-3 oscillatory circuit2.5 复位系统 MCS51单片机通常采用上电自动复位和按钮复位两种方式。通常因为系统运行等需要,常常需要人工复位,本设计采用按钮复位的方式,即按下开关一定时间就能使RTS引脚端为高电平,从而使单片机复位。同时,简单复位电路中,干扰信号易串入复位端,由此可能会引起内部某些寄存器错误复位,这时可在RST引脚上接去耦电容。在STC12C5A60S2单片机中有两个复位端口,即RST/P4.7、RST2/P4.6,当晶振频率小于或等于12MHz时,使用RST端口。由于本设计使用外接12MHz的晶振作为振荡时钟,所以采用如图2-4所示的复位系统。風撵鲔貓铁频钙蓟纠庙。图 2-4 复位系统Fig 2-4 Rest System2.6 程序下载系统单片机系统的传统编程方式是先将单片机从电路板上取下,放入专用的编程器进行编程,再放入电路板进行调试。其缺点是频繁拔插器件容易损坏器件的引脚;如果频繁的调试程序,必须重复拔插,大降低了开发效率。ISP(在线系统编程)技术是一种无需将存储芯片从嵌入式设备上取出就能对其进行编程的过程。其优点是,即使器件焊接在电路板上,仍可对其进行编程。在线系统可编程是Flash存储器的固有特性(通常无需额外电路),Flash几乎都采用这种方式编程。灭嗳骇諗鋅猎輛觏馊藹。ISP的实现相对要简单一些,一般通用做法是内部的存储器可以由上位机的软件通过串口来进行改写。对于8051系列单片机来讲可通过SPI接口或其它的串行接口接收上位机传来的数据并写入存储器中。而上位机PC机与下位机单片机通过RS-232串行接口总线进行的串行通信。8051系列单片机带有一个全双工的串行接口,因此用RS-232串行接口总线非常方便。PC机配置RS-232标准接口,RS-232信号电平为负逻辑(逻辑“0”为+12V ;逻辑“1”为-12V),8051单片机输入、输出电平为TTL电平(逻辑“0”为小于等于0.5V;逻辑“1”为大于等于2.4V)。所以8051单片机与PC机间点对点异步通信需加电平转换电路,否则将烧坏TTL电路。MAX232是MAXIM公司生产的电平转换器件,只需在外部接入相应的电解电容即可。因此,本设计采用直连串口线进行串口通信,其中STC12C5A60S2的P30/RXD和P31/TXD分别和下载器的第10管脚/T和第9管脚/R相连,串口线的第5管脚接地,2、3管脚和下载器的7、8管脚相连。具体电路如图2-5所示。铹鸝饷飾镡閌赀诨癱骝。图 2-5 程序下载系统Fig 2-5 Program Download System2.7 音乐播放系统在本设计中,音乐播放系统是通过三极管驱动有源蜂鸣器发声,而具体的音符声调则由程序控制。因此,音乐播放系统的硬件电路非常简单。具体接法为有源蜂鸣器正极直接接+5V电源,负极与三极管8050的发射极相连,8050的集电极直接接地,其基极串一个1K的电阻连接到STC12C5A60S2单片机的P20端口。如图2-6所示。攙閿频嵘陣澇諗谴隴泸。图片2-6 音乐播放系统Fig 2-6 Music Player System2.8 LCD液晶显示接口电路 液晶显示屏是整个系统硬件的重要组成部分,担当着人机交互的重要角色。本设计采用铭正同创公司生产的MzL02D-12864液晶点阵屏作为显示器件。它是一块128*64点阵的LCD显示模组,模组上的LCM采用COG技术将控制(包括显存)、驱动器集成在LCM的玻璃上,接口简单、操作方便。其特点为单电源供电,对比度编程可调,可采用并行接口为6800/8080时序或者串行SPI的MPU接口方式,整块液晶屏由3.3V的白色LED背光,美观大方。其外部接口分为电源端口、数据端口和命令端口三部分组成。本设计中LCD的数据端口连接到STC12C5A60S2单片机的P0端口,LCD的命令端口连接到单片机的P2端口。具体硬件电路如图2-7所示。趕輾雏纨颗锊讨跃满賺。图 2-7 LCD液晶显示接口电路Fig 2-7 Liquid Display Interface Circuit2.9 操作控制接口操作控制模块是智能俄罗斯方块游戏系统的输入器件。它包括主控制器和辅助控制器。主控制器包括七个按键,分别为:旋转/确定、向左/返回上级菜、向右/下一个、快速下降、使用道具、暂停、退出。副控制器则包括五个按键,分别为:旋转/确定、向左/返回上级菜、向右/下一个、快速下降、使用道具。在硬件电路方面辅控制器比主控制器少两个按键的连接。如图2-8所示为主控制器的接线图。与单片机的具体接口可根据实际设定。夹覡闾辁駁档驀迁锬減。图片2-8 控制模块接口Fig 2-8 Control Interface 3 系统软件平台构建3.1 Vision简介Vision是德国Keil公司开发的单片机IDE软件,最初主要用于8051系列单片机,目前也有支ARM系列单片机的专用版本MDK-ARM。本设计使用的是keil Vision3版本的开发软件进行程序开发。视絀镘鸸鲚鐘脑钧欖粝。3.2 LCD12864液晶屏显示原理3.2.1 LCD模块总线选择及时序 MzL02D模块提供了两个LCM的引脚(C86和PS引脚)供用户选择模块的接口类型,分别可以选择6800并行总线、8080并行总线或者SPI串行接口。模块默认情况下PS为高电平、C86为高电平,此时为6800总线接口类型,本设计采用6800总线模式。在此种接口模式下,WR 线为读写控制信号线,当WR 为高电平时为读状态,WR为低电来时为写入状态。在6800总线接口模式下LCD的时序如图3-1所示。偽澀锟攢鴛擋緬铹鈞錠。图 3-1 6800总线时序Fig 3-1 6800 Bus Timing3.2.2 LCD显示RAM区映射概况驱动控制芯片的显示RAM区中,每个byte的数据对应屏上的点的排列方式为:纵向排列,低位在上高位在下;如图3-2所示。MzL02D-12864液晶显示模组的显示器上的显示点与驱动控制芯片中的显示缓存RAM是一一对应的;共有65(8Page * 8bit + 1)*132个位的显示RAM区。而显示器的显示点阵大小为64*128点,所以实际上在液晶显示模块中有用的显示RAM区为64*128个位;按byte为单位划分,共分为8个Page,每个Page为8行,而每一行为128个位。(即128列)。緦徑铫膾龋轿级镗挢廟。图 3-2 字节数据排列情况Fig 3-2 Byte data arrangementMzL02D-12864液晶显示模块的显示屏上的每一个点都对应有控制器片内的显示缓存RAM中的一个bit,显示屏上64*128个点分别对应着显示RAM的8个Page,每一个Page有128个byte的空间。因此可知显示RAM区中的一个Page空间对应8行的点,而该Page中的一个byte数据则对应一列(8个点)。騅憑钶銘侥张礫阵轸蔼。用户如要点亮LCD屏上的某一个点时,实际上就是对该点所对应的显示RAM区中的某一个位进行置1操作,所以就要确定该点所处的行地址、列地址。MzL02-12864液晶显示模组的行地址实际上就是Page的信息,每一个Page应有8行;而列地址则表示该点的横坐标,在屏上为从左到右排列,Page中的一个Byte对应的是一列(8行,即8个点),达128列。可以根据这样的关系在程序中控制LCD显示屏的显示。疠骐錾农剎貯狱颢幗騮。3.2.3 LCD的驱动方法在很多资料以及书籍当中,通常介绍有两种 LCD模块的连接方法:直接控制和间接控制;直接控制实际指的是 LCD模块的总线接口直接与MCU端口连接,然后 MCU 通过程序控制端口来模拟 LCD的总线时序来完成对其的控制操作;而间接控制指的是MCU本身就有外部总线拉出,与LCD的总线接口对应的连接上,程序中直接操作总线以控制LCD。目前有很多MCU 都把总线密封起来了,都没有引出外部总线;所以通常在用MCU控制LCD模块时,时常会选择直接控制的方式,即利用端口来模拟总线时序;当然了,如果本身就有总线而且也与LCD模块的总线配得上的话,肯定会使用总线连接的间控方式。镞锊过润启婭澗骆讕瀘。本设计采用直接控制的方式,将MzL02D-12864 LCD模块的总配置为6800总线,这与绝大部分引出外部总线的MCU的时序是不一样的。本设计的LCD12864模块中,用户程序对其进行显示控制时,无非就是通过对LCD模块内部的驱动控制器当中的寄存器进行设置操作;最常用的如LCD的显示开/关、操作显存地址(行与列地址)的设置等。这些寄存器一般都在LCD模块的驱动控制器文档中有详细介绍。榿贰轲誊壟该槛鲻垲赛。3.2.4 LCD驱动程序架构LCD12864驱动程序主要由LCD底层驱动和LCD功能函数两部分组成。用户在应用层直接使用功能函数即可。具体框架如图3-3所示。邁茑赚陉宾呗擷鹪讼凑。功能函数层字库驱动层函数声明功能函数LCD配置驱动层传输模式及IO端口配置数据传输驱动应用层用户应用程序功能函数声明嵝硖贪塒廩袞悯倉華糲。图 3-3 LCD驱动程序架构Fig 3-3 LCD Driver architectures3.3 俄罗斯方块游戏设计3.3.1 俄罗斯方块游戏功能简介俄罗斯方块游戏的规则很简单,当方块从屏幕上方落下来时,玩家控制方块的位置以及旋转方块,巧妙地安排布置达到充分利用屏幕空间的目的。每当屏幕的一整行被方块排满时,作为奖赏,整行从屏幕上消失,剩余的方块依次往下降一行。当方块堆积达到无法再落下方块的时候,游戏结束。本设计中游戏主要的功能点包括:该栎谖碼戆沖巋鳧薩锭。(1) 每4个小方块可以组合成一组方块群,游戏共有7种方块群,每次随机产生一种;玩家使用向左、向右、快速向下这些按键控制方块的位置,旋转按键控制方块顺时针旋转。在主控制手柄上还有退出、暂停按钮,可以实现随时切换到启动时的状态和暂停游戏的功能。劇妆诨貰攖苹埘呂仑庙。(2) 在本设计中,系统为玩家提供了背景音乐,玩家可以根据个人喜好开启或关闭音效。(3) 单人模式下,玩家使用主控制器进行操作。每消去一行,系统就给玩家加1分。在单人模式下,如果积分超过系统记录的最高积分,系统将更新最高积分。臠龍讹驄桠业變墊罗蘄。(4) 本设计的亮点是实现双人对战游戏,通过主控制器在菜单选项中选择双人模式,第二玩家可以通过副控制器对第二游戏界面进行操作。本游戏系统规定,双人对战游戏中积分可分为两个阶段。第一阶段是普通积分阶段,即双方玩家每消去一行,其相应积分表加1分;第二阶段是多积分阶段,即每消去三行才获得1个积分。双方先达到第二阶段末尾者,即可取胜。同时,该设计中还为双方玩家增加了道具功能,即当使用该功能时,可令对手当前移动图块消失,随机出下一个图块。当玩家一次性消去三行,就能获得一次道具功能,最多一次性累积2个道具。系统默认为每个玩家提供1个道具。这样不仅丰富了俄罗斯方块游戏的功能,而且使其更具趣味性。鰻順褛悦漚縫冁屜鸭骞。3.3.2 系统界面的设计(1) 菜单选项界面当玩家将本设计的作品上电启动后,系统首先在LCD显示器件上呈现一个动态的开机动画。然后,系统提供三个功能选项,即最高积分、游戏设置、开始游戏。其中,“游戏设置”选项包含了两级子菜单。一级菜单包括“模式选择”和“音效选择”。在这两个选项后面给出单字提示,以说明当前相应设置选项的状态。“模式选择”菜单包含的二级子菜单有“单人模式”和“双人模式”。“音效选择”菜单包含的二级子菜单有“开音效”和“关音效”通过控制按键即可设置成相应状态。“最高积分”菜单选项为玩家提供单人模式下系统记忆的最高积分。如果选择了“开始游戏”菜单选项,则系统根据“游戏设置”选项中的设置启动相应的游戏界面。菜单选项界面框架如图3-4所示。穑釓虚绺滟鳗絲懷紓泺。菜单功能界面框架最高积分游戏设置开始游戏模式选择音效选择单人模式双人模式开音效关音效图 3-4 菜单选项界面框架Fig 3-4 The menu option interface framework(2) 游戏操作界面首先,我们先来介绍单人模式下游戏界面的一些情况。在启动单人模式后,LCD12864显示屏分成两屏,左半屏为俄罗斯方块游戏地图map区,右半屏为俄罗斯方块图形预览区和实时积分显示区。其结构框架如图3-5所示。隶誆荧鉴獫纲鴣攣駘賽。启动单人模式左半屏图形预览游戏map区右半屏积分显示图 3-5 单人模式界面结构框架Fig 3-5 The single-player game interface architecture浹繢腻叢着駕骠構砀湊。其次,如果玩家启动的是双人模式,LCD12864显示屏也分为两屏,左屏由主控器操作,称为map1区,右屏由副控制器操作,称为map2区。在两屏中间是双方积分显示区和各自的道具数量显示区。其结构框架如图3-6所示。鈀燭罚櫝箋礱颼畢韫粝。双人模式双方积分进度条双方道具使用情况积分和道具区Map2区map1区图 3-6 双人模式界面结构框架Fig 3-6 Double mode interface architecture系统界面整体程序流程图如图3-7所示。NYYNNYYNY单人模式音效选择模式选择游戏设置双人模式音效关音效开清模式标志置模式标志返回上一级清音效标志置音效标志返回上一级开机启动动画进入主菜单显示单人最高积分返回按键最高积分开始游戏进入游戏游戏设置模式选择音效选择惬執缉蘿绅颀阳灣熗鍵。图 3-7 开机界面功能框架Fig 3-7 Boot interface function frame3.3.3 游戏系统“枚举算法”概述本文绕开了涩难懂、比较复杂的“矩阵算法”,提出了另一种“枚举算法”来实现这个经典游戏。“枚举算法”没有复杂的数学理论、避免了在程序中大量使用矩阵运算公式,设计思路清晰、明了,非常适合游戏设计的初学者理解和实现。贞廈给鏌綞牵鎮獵鎦龐。所谓枚举算法,就是直接枚举出游戏中各图块的基本形状和它们的旋转形状,然后控制每一种不同形状的方块在游戏戏中的产生、移动、旋转、落下、填满和清除等游戏过程。嚌鲭级厨胀鑲铟礦毁蕲。3.3.4 俄罗斯方块造型设计的方法众所周知,俄罗斯方块一般有七种基本形状,每个基本形状都由4个正方形的小方块构成。利用小方块不同的摆放位置,可产生19种旋转型图块。这七种图形分别是“I型”、“L型”、“反L型”、“Z型”、“反Z型”、“口型”、“T型”。如图3-8所示。薊镔竖牍熒浹醬籬铃騫。I型L型反L型T型Z型反Z型口型图 3-8 方块模型Fig 3-8 Square model本系统在构造19个方块模型时的思路是:定义一个数组,用以存储各个模型中4个小方块的顶点坐标。比如L型,其数据结构为0,0,0,4,0,8,4,8。其中,每两个数据为一个小正方形的列、行坐标,如图 3-9所示。由图可知,整个界面的坐标原点在左上角,分别向右、向下作为横轴的正方向和纵轴的正方向。图中每一格代表了LCD12864中的连续四行,第1格的坐标是(0,0);第2格的坐标是(0,4);第3格的坐标是(0,8);第4格的坐标是(4,8);其它图块也按此方法编辑数组内容。齡践砚语蜗铸转絹攤濼。2341图 3-9 L型Fig 3-9 L Shape3.3.5 随机产生俄罗斯方块的方法(1) 产生随机数的理论依据为了实现随机落下各类方块图形,游戏过程序中必须抽取随机数来确定方块的类型。随机数是一个既简单又复杂的问题。绅薮疮颧訝标販繯轅赛。本设计采用众所周知的线性叠加法,虽然没有完美的方法产生随机数,不过线性叠加法是一个合适的方法,它彻底解决了8位机随机数的问题。如果从一个足够长的数字序列中的某一个点取出一边串的数字,那么这些数字就看似随机。这个开始的点(数字)叫做种子。如果从相同的点(种子)开始,将会得到相同的数字,这是因为我们是从固定的序列中取数字(所以叫伪随机)。但这却是一个有用的特性,我们可以每次从不同的点取数,即改变种子,从而可以实现真正的随机。饪箩狞屬诺釙诬苧径凛。(2) “线性叠加法”的概况“线性叠加法”其实只涉及二个内容即:乘法和加法。只需三个步骤即:第一,为了取得新的种子,旧的种子与一个常数A相乘;第二,所得的结果和第二个常数C相加;第三,新的种子就是第二步结果的低32位。保留低32位很重要,用来获得下一个种子。计算公式为:烴毙潜籬賢擔視蠶贲粵。 种子 = A * 种子 + C (3-1)此公式在几何图中表示为一条直线,而且新种子由旧种子反复相加得来,所以叫线性叠加。随机函数的关键在于选择优秀的“常数A”(也叫乘数A),其实也就是选择了一个固定的数字序列。“常数C”,不像乘数A那样重要,但是一定是个奇数。事实上,C可选1。因为奇数(旧的种子)乘奇数(乘数A)是奇数,再加奇数(常数C)将会是一个偶数学偶数(旧的种子)乘奇数(乘数A),加奇数(常数C)将会是一个奇数。如此种子会在奇数和偶数之间转变。因为种了的变化足够随机,所以种子的值可以作为8位或16位随机数。鋝岂涛軌跃轮莳講嫗键。(3) Keil C51中“线性叠加法”的实现方法在Keil C51中生成伪随机数需要用到两个函数,一个是srand(unsigned int seed),一个是rand()。首先给srand(unsigned int seed)提供一个种子,该种子为unsigned int类型,其取值范围从0到65536,srand(unsigned int seed)根据这个种子会由上述特定的公式生成一个随机数序列;然后调用rand(),它会依次从这个序列中返回一个数,其值在0 到32767之间。因随机数函数rand()函数实际上是线性随机的,如果在不指定srand(unsigned int seed)的种子的情况下,它每次都使用默认的种子,因此生成的序列会是同一个,所以会取到相同的数字序列。这可能会导致每次重新运行游戏时其随机数结果都是一样的。为了解决该问题,本设计在玩家进入游戏时读取按键按下瞬间定时器T0的计数值,作为srand(unsigned int seed)的种子。从而实现真正的随机。撷伪氢鱧轍幂聹諛詼庞。(4) 随机数程序流程图如图3-10为随机数程序流程图。srand(unsigned int seed)产生一数据序列开始游戏读取T0计数值作为seedrand()将返回值进行处理后选择相应的方块数组踪飯梦掺钓貞绫賁发蘄。图 3-10 随机数程序流程图Fig 3-10 Ramdom process flow program diagram3.3.6 俄罗斯方块平移的实现方法 方块产生后,需要用全局变量来保存方块在游戏map区中的行坐标和列坐标。方块的平移包括左移和右移两种情况,无论那种情况都要首先进行合法性判断。婭鑠机职銦夾簣軒蚀骞。(1) 俄罗斯方块平移特性在本设计中规定当按下一次左移或右移按键时,map区中的当前图块就左移或右移一个正方形的宽度。而一个小正方形的宽度,则对应着LCD12864中的4列。譽諶掺铒锭试监鄺儕泻。(2) 平移合法性判断 平移的合法性判断经较简单,只需判断它旁边相邻位置是否被填充即可。(3) 平移算法的实现在程序中,当有任意一个平移按键被按下时,系统接收到信号,然后调用平移函数进行判断其合法性,得到该函数的返回值为1后,再进行平移操作。其程序流程如图3-11所示。俦聹执償閏号燴鈿膽賾。返回1返回1返回0YYNN左移按键被按下right_left_judge函数列变量f_x减4行不变右移按键被按下列变量f_x加4行不变right_left_judge函数将图块左移一格将图块右移一格缜電怅淺靓蠐浅錒鵬凜。图 3-11 平移算法流程图Fig 3-11 Translation algorithms flowchart3.3.7 俄罗斯方块旋转的实现方法(1) 俄罗斯方块旋转图形概况方块旋转是一个游戏实现的关键问题,实现旋转的数学方法有多种,如矩阵变换法、枚举法、索引法等。本文前面已经论述了此次设计采用枚举的方法,对19种俄罗斯方块造型进行构造。游戏过程中,每一种基本方块都要做旋转控制,于是就产生了旋转后的方块形状,本文将其称为“旋转型”。骥擯帜褸饜兗椏長绛粤。基本型中的“I型”,只有一种旋转型,即由竖直旋转90度后成为水平。因此,基本型加上一种旋转型,共有两种形状。癱噴导閽骋艳捣靨骢鍵。基本型中的“L型”和“反L型”有三种旋转型,将它按顺时针每旋转一个90度就产生一种旋转型,可以旋转三次,得到三种不同的旋转型,因此,它的三种旋转型加上其基本型,“L型”和“反L型”方块分别有四种形状。鑣鸽夺圆鯢齙慫餞離龐。基本型中“Z型”和“反Z型”可以顺时针旋转一次90度,加上他们的基型分别有两种形状。基本型中的“T型”有三种旋转型,将他按顺时针旋转一个90度就产生一种旋转型,它可以旋转三次,得到三种不同的旋转型,因此,它的三种旋转型加上其基本型,“T型”方块共有四种形状。榄阈团皱鹏緦寿驏頦蕴。基本型中的“口型”方块没有旋转型,在游戏中只有一种形状。综上所述,七种基本型方块,因旋转产生了不同的旋转型,这些旋转型加上他们的基本型,整个游戏中,共有19种不同的方块形状。逊输吴贝义鲽國鳩犹騸。本设计实现旋转操作的具体方法,可分为两类,一类是I型的旋转策略;另一类则是其余17种基本型的旋转策略。幘觇匮骇儺红卤齡镰瀉。(2) 旋转合法性判断方块做顺时针旋转,每次旋转90度。本设计规定只要旋转后到达的地方未被填允,方块就可以进行旋转操作。(3) I型的旋转策略为了在视觉上实现I型的顺时针旋转,本设计采用位置错落的方式来实现。其具体过程如图3-12所示。 图 3-12 I型的旋转方法Fig 3-12 The rotation method of I shape当落下的图块是图所示时,其旋转周期为 。当落下的图块是图所示时,其旋转周期为 。 之所以把I型的旋转变换单独拿出来讨论,是因为I型只有基本型和旋转型共两种图块。如果在当前位置直接按这两种图块的坐标数组进行图形切换,则无法实现顺时针旋转的视觉效果。所以,在旋转处理程序中,当要旋转的当前图块为I型及其旋转型时,就要改变当前列、行这两个全局变量的值。誦终决懷区馱倆侧澩赜。(4) 其余17种基本型的旋转策略除了I型的旋转比较复杂外,其余17种类型的方块只需按各自旋转的顺序在当前位置用已经编辑好的坐标数组来实现旋转即可。具体程序流程如图3-13所示。医涤侣綃噲睞齒办銩凛。NYYYNNYN按下旋转键是否是I型、一型判断方块经过了几次旋转判断新位置是否可写判断是哪类图块I型及其旋转型其它17种类型根据上述判断的结果决定当前位置行、列坐标的增减进行旋转变换是否是I型、一型以外的其它类型按照已经排列好的变换顺序取坐标数据恢复原先坐标舻当为遙头韪鳍哕晕糞。图 3-13 旋转程序流程图Fig 3-13 Rotating program flowchart3.3.8 俄罗斯方块下移的实现方法 在整个游戏过程中,方块是不断向下运行的,其下移特性为:方块每次下移的格数对应着LCD12864屏幕中的一行。具体程序实现流程如图3-14所示。鸪凑鸛齏嶇烛罵奖选锯。YNYNYN进入下移判断程序读取下移一行后每个小方块的行列坐标判断每个小方块的行在LCD显示区中的哪一页上半页下半页是否可写标志加1标志是否为4程序返回1是否循环了4次程序返回0筧驪鴨栌怀鏇颐嵘悅废。图 3-14 下移判断程序流程图Fig 3-14 Moves down judgment program flowchart3.3.9 满行检测及消行功能的实现方法 随着方块的不断累积,方块每次下落到不能再运动时,系统就会检测游戏map区,当检测到map区中某一行堆积满后,系统就消去此行,作为奖励,其上方的方块群则依次下落一行。系统满行检测和消行功能是通过“满行检测及消行”函数实现的,即在每个图块落定和下一个图块未出来之前,按页扫描游戏map区,每半页算一行。若检测到某行被填满,则消去此行,并将其上方的图块往下移动相应的行数。韋鋯鯖荣擬滄閡悬贖蘊。具体程序实现流程如图3-15所示。YNYNYN某一方块已落定进入满行检测程序,页标志n=7从第n页开始检测检测当前页的下半页是否满行消除此行,其上方块依次下落一行检测当前页的上半页是否满行消除此行,其上方块依次下落一行n减1是否是第0页退出涛貶騸锬晋铩锩揿宪骟。图 3-15 满行检测程序流程Fig 3-15 Full line detection processes3.3.10 游戏积分的计算方法在游戏系统中,积分体现了玩家在此次游戏中的操作情况。本游戏系统分单人模式和双人模式两种积分计算方式。单人模式下,玩家每消去一行,就能获得1个积分,如果当前游戏积分超过系统记录的单人最高游戏积分,则系统将更新记录,以便其他玩家挑战。钿蘇饌華檻杩鐵样说泻。双人模式下,双方的积分制度是一样的,以进度条的方式展示在积分与道具区。其中积分区分为两个阶段,第一阶段每消去1行进度条向上走一格,共8个进度格;第二阶段每累计消去3行进度条才向上增加一格,共6个进度格。双方谁先到达进度条的顶端就算胜利。戧礱風熗浇鄖适泞嚀贗。当一次性同时消去3行时,则能获得一个道具功能的使用权。最多能累积两个道具。具体程序实现流程如图3-16所示。購櫛頁詩燦戶踐澜襯鳳。NYYNYNYNYN消去一行当前积分加1是否大于最高纪录存储当前积分退出单人模式下双人模式下增加n分,消去n行消去n行?n0n=3?增加1道具道具是否小于2个?增加1道具进度是否到顶?结束所有进程返回游戏嗫奐闃頜瑷踯谫瓒兽粪。图 3-16 积分系统程序流程图Fig 3-16 Score system program flowchart3.4 双人俄罗斯方块游戏设计3.4.1 RTX51 Tiny简介许多微处理器应用程序要求同时执行多个任务。对于这样的应用程序,一个实时操系统(RTOS)允许灵活的分配系统资源(中央处理器、存储器等)给各个任务。RTX51它可以运行于所有的8051派生机型,是一个很好使用的强大的准并行实时操作系统。虚龉鐮宠確嵝誄祷舻鋸。RTX51可以简化那些复杂而且时间要严格的工程软件设计工作。有两个不同的RTX51版本可以利用:RTX51 Full和RTX51 Tiny。二者的主要区别

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论