




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于单片机的俄罗斯方块游戏摘 要俄罗斯方块作为最经典的电子游戏之一,它曾经引起的轰动真是不容小觑。本设计是在12C5A60SR单片机的基础上利用C语言编程,做出实物电路图来模拟俄罗斯方块小游戏的设计。游戏需要利用按键控制方块运动,玩家可以以90度为单位旋转方块,以格子为单位左右移动方块,当区域中某一行全部由方块填满时,则该行会消失并记分,同时消除的列数越多,得分越多;当方块堆到区域最上方而无法消除时,游戏结束。游戏设计主要分为硬件电路设计和源代码编写两部分。对于硬件电路,有必要充分了解核心单片机的外部接口功能,液晶显示器需要处理的逻辑关系和它控制原理,以及键盘设置所需的程序。而对于编程方面首先
2、定义一个二维数组确定整个区域,了解游戏中所需要用到的一些特殊的函数,然后判断区域是否有方块,还要判断方块落下后,一行的空格是否填满或者整个区域是否填满等,不断的按照这样的方法循环扫描。 实际运行表明,该设计可以实现基本的游戏功能,达到游戏的目的。 【关键词】12C5A60SR;LCD液晶;C语言Tetris game based on single chip microcomputer Abstract Tetris is one of the most classic electronic game, it had caused a sensation is really can not b
3、e underestimated. This design is the use of C programming language based on 12C5A60SR microcontroller, design the physical circuit diagrams to model the Tetris game. The game needs to use the keys to control block movement, game player can be 90 degrees rotate, by a lattice units moving boxes around
4、, when the region in a row are filled by the box, the guild to disappear and score, the number of columns, and eliminate scores more; when the box at the top of pile to areas not to eliminate, the end of the game. Game design is divided into hardware circuit design and source code in two parts. For
5、the hardware circuit, it is necessary to fully understand the external interface functions of the core MCU, LCD need logic processing and its control principle, and procedures required for keyboard settings. For programming the entire region defined first determine a two-dimensional array, understan
6、d some special function required in the game, and then determine whether to judge the regional block, block falls, a row space is filled or the whole area is filled, circular in accordance with this method of scanning time. The actual operation shows that, the design can achieve the basic game funct
7、ions, achieve the goal of the game.【Key words】 12C5A60SR; LCD liquid cryst; C language目 录 1 绪 论1 1.1 课题背景1 1.2 选题意义及其概况12 游戏需求及流程分析3 2.1 游戏组成及规则3 2.2 俄罗斯方块工作流程图33 游戏开发环境介绍4 3.1 单片机简介4 3.2 KEIL软件介绍7 3.3 PROTEL DXP软件介绍 74 软件设计8 4.1 软件设计概述8 4.2 软件设计重要细节85 硬件电路设计11 5.1 组成设备11 5.2 电路设计11 5.3 焊接与调试146 游戏测
8、试及结果157 总 结17参考文献18致 谢191 绪论1.1 课题背景 随着科技的进步,电脑、手机、掌上游戏机(Play Station Portable , PSP)PSP等电子产品性能越来越好的同时,电子游戏已经成为越来越受欢迎的娱乐方式,现在几乎成了一个不可或缺的精神食粮,甚至有许多人认为,电子游戏已经不仅是一种娱乐,也成为了一种文化现象。电子游戏是一个组合动画,音乐,故事情节为一体的游戏,涉及多个行业。电子游戏有着多种分类方式,一般分为网络游戏、电脑游戏、电视游戏、街机游戏、便携游戏和电子竞技等。一般来说电子游戏具有模拟性和互动性两种性质,模拟性指人们对现实世界或思维世界的模拟,互动
9、性则指人与机器之间产生的一种关系。凡事都有两面性,电子游戏也不例外,它有利也有弊,只要不沉迷其中,还是能作为一种很好的娱乐方式的。 俄罗斯方块作为最经典的电子游戏之一,它曾经引起的轰动真是不容小觑。它上手极其简单,规则很简单却又变化无穷,要熟练地掌握其中的操作与摆放技巧还是需要一定时间的,作为家喻户晓的游戏,它的受欢迎程度可以说是史上任何一款游戏不能比拟的1。顾名思义,俄罗斯方块自然是俄罗斯人发明的,这位伟大的发明家名叫做Alex Pajitnov。现在玩的人虽然很少了,但目前流行的许多游戏上都有它的身影,而且对我们90年代的人来说就是整个童年。因此,对它的研究,无论从技术上还是社会意义上都是
10、很有价值的。1.2 选题意义及其概况 电子游戏诞生于20世纪末,这种娱乐方式已经成为新世纪不可或缺的时尚生活。根据整个世界的娱乐性行业来说,游戏产业已经显示出优于其他娱乐业的发展势头。电子游戏最初产生于美国,1971年,一个麻省理工学院的学生设计了世界上第一个服务游戏机(俗称街机的街机游戏),被称为“计算机室”2。虽然刚开始由于市场原因这款游戏最终以失败告终,但它还是开启了电子游戏的发展之旅。电子游戏在中国出现至今已20多载,期间经历过许多风风雨雨,一路坎坷,现在与电子游戏发达的韩国、日本、美国等国家相比仍然存在着比较大的差距。 电子游戏的发展与计算机是分不开的。现如今的计算机系统正朝着三个方
11、向发展:巨型化、网络化和单片化,用以解决复杂系统计算和高速数据处理的依然是巨型机,所以,巨型机目前努力在朝高速及处理能力方向发展3。单片机刚出现时,英特尔公司为其命名为嵌入式微控制器(Embedded Microcontroller Unit,EMCU) ,因为它可以嵌入到各种仪器、设备中区,这也是单片机最明显的优势,这一点巨型机和网络是做不到的。 单片机的应用很广泛,家用电器、办公室自动化、智能产品、商业营销、工业自动化等都有它的身影,如今在游戏领域里单片机的作用也愈发明显。虽然用单片机来设计一个简单的俄罗斯方块游戏程序似乎有点大材小用,但这仅仅是一个单片机在嵌入式游戏方面的简单应用,正因为
12、它的前景无可预计,所以才有这个设计,此次设计仅仅是为了举一个单片机在游戏上应用的一个简单例子,它就可以很好的说明单片机功能的强大,更高的可控性和集成度高的好处,随着计算机技术、通信技术和软件技术的迅猛发展3。再加上3C产业(计算机、通讯、消费电子)的合成及3G移动通信时代的到来,嵌入式软件发挥了更加重要的作用,它的发展为绝大多数电子设备注入了新的活力,各种装备与设备上由于有了嵌入式系统软件的加入,大大地推动了其行业渗透性应用,嵌入式技术不仅提高了产品的技术含量,更成为产品增值的关键,在整个软件产业中占据了重要地位,并受到世界各国的广泛关注,如今已成为信息产业中最为耀眼的“明星”之一。2 游戏需
13、求及流程分析2.1 游戏组成及规则 1)游戏组成 一个用于摆放方块的平面虚拟场地,其标准大小:长为12,高为20(以每个小正方形为单位)4;一组由四个小正方形组成的规则图形,总共有七种;一个由四个按键组成的键盘,上下左右分别控制变化、左移、右移和下落。 2)游戏规则 游戏需要使用按键控制方块运动,方块不仅可以以90°为单位旋转,还能在格子单元内左右移动;方块移到区域最底端或落到其他方块上时,就会固定在该处,新的方块出现在区域顶端开始落下;当区域中某一行被方块填满,则该行会消失并记分,同时消除的列数越多,得分越高;当屏幕被方块填满时片消除不了了,游戏结束。游戏还会提示下一个方块,如果玩
14、家比较厉害可以根据提示来判断本次方块如何放置。2.2 俄罗斯方块工作流程图 游戏开始后,屏幕最顶端会随机产生一个方块图形,将其交给图形变量,再对图形进行变化,再判断图形的位置,没有到底就逐次下降一行直到最底端;如果图形到底了就检测一行是否被方块填满,填满了进行清除并记分,没有就检测整个屏幕是否被方块填满,填满了就进行清屏游戏结束,没有填满就回到进行图形变化的步骤即可。3 游戏开发环境介绍3.1 单片机的简介 单片机全称单片微型计算机,又称微控制器,是把中央处理器、存储器、定时器、计数器、各种输入输出接口等都集成在一块集成电路芯片上的微型计算机,它是微型计算机的一个重要分支,也是颇具生命力的机种
15、。 单片机主要用于测试和控制领域,按它的适用范围可分为通用性和专用型两大类。通用性就是没有限制,都可以兼容,二专用型是针对特定的要求来设计的,目前,单片机经过三代的发展,正在向低电压,低功耗,低成本,多功能,高性能,大容量存储,强大的I / O功能和良好的结构相容性方向。单片机应用的重要意义还在于它从根本上改变了传统的控制系统设计思想和设计方法,以前,必须使用模拟或数字电路才可以实现,现在只需要微型单片机就可以实现5。本次论文的重点就在于单片机的最小系统部分,这次选用的是Atmel公司推出的常用芯片12C5A60SR,主要是它不仅价格便宜,而且是采用高密度非易失性存储器技术制造而成,与工业80
16、C51产品指令及引脚完全兼容,下面详细介绍一下这款单片机: 1) 12C5A60SR单片机的主要特点12C5A60SR是一种低功耗、高性能的半导体集成电路8位微控制器,具有8K字节在系统可编程Flash存储器6 。它是用Atmel公司高密度非易失性存储器的技术制造而成,与工业80C51产品指令及引脚完全兼容。片上的Flash允许程序存储器在系统可编程,也适于常规编程器,单芯片拥有8位中心处理器(Central Processing Unit ,CPU)和在系统可编程的Flash,这使得12C5A60SR为众多嵌入式控制应用系统提供高灵活、超有效的解决方案7。它具有双列直插式封装 、特殊引脚芯片
17、封装 、薄塑封四角扁平封装三种封装方式,本设计选用双列直插封装的单片机,此种封装适合印制线路板(Printed Circuit Board,PCB)的穿孔安装,也容易布线,操作起来很方便。12C5A60SR单片机的由8位CPU和在系统可编程Flash、晶片内部具时钟振荡器(工作频率高达12MHz)、8KB 的内部程序存储器(Read-Only Memory,ROM)、256字节的内部数据存储器(Ramdom Access Memory ,RAM)、32 个可编程I/O口线、8个中断向量源、三个 16 位定时器/计数器、三级加密程序存储器以及全双工异步串行通信口等组成8。 2)12C5A60SR
18、单片机的引脚简介 图3-1 12C5A60SR单片机引脚图表3.1 12C5A60SR单片机引脚功能表 3) 12C5A60SR的晶振电路 顾名思义,晶振也就是晶体振荡器,它在单片机中充当着心脏的角色。它的主要作用就是通过晶振来产生时钟周期,时钟周期越小那么他对应的时钟频率就越大,时钟频率一大那么单片机的运行速率也就越快,简单来说,没有晶体就无法产生晶振,没有晶振就无法产生时钟频率,没有时钟频率就无法执行程序代码,无法执行程序单片机不能工作。所以通常为了保持各模块保持同步,一个系统共用一个晶振。 4) 12C5A60SR的复位电路 复位电路,简而言之就是把电路恢复到初始状态,就像计算器的清零按
19、钮的作用一样。就目前来说,单片机复位电路主要分为微分型复位电路、积分型复位电路、比较器型复位电路和看门狗型复位电路四种。它的基本功能是:系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。为可靠起见,电源稳定后还要经过一定的延时才撤销复位信号,以防电源开关或电源插头分合过程中引起的抖动而影响复位。选用的微处理器复位电路中所需要的参数振动的稳定性保证复位后持续时间大于2个机器周期。12C5A60SR单片机是整个开发板的控制中心,我们在选用电路时应该保证它的可靠性和抗干扰性。在特定的电子设备的选择,应先确定它的参数,有参数作参考会比较准确。 3.2 Keil 软件介绍单片机开发中除必要的硬件
20、外,同样离不开软件,Keil是众多单片机应用开发的优秀软件之一,它集编辑、编译、仿真于一体,支持汇编,PLM 语言和C语言的程序设计,界面友好,易学易用。随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil 软件是目前最流行开发 MCS-51 系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持 Keil 也看得出来9。掌握这一软件的使用对于使用 51 系列单片机的爱好者来说是十分必要的,如果你使用C语言编程,那么 Keil 几乎就是你的不二之选(目前在国内你只能买到该软件、而你买的仿真机也很可能只支持该软件),即使不使用C语言而仅
21、用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。3.3 Protel DXP软件介绍 Protel DXP 2004是澳大利亚Altium公司于2002年推出的一款电子设计自动化软件。它的主要功能包括:原理图编辑、印制电路板设计、电路仿真分析、可编程逻辑器件的设计。用户使用最多的是该款软件的原理图编辑和印制电路板设计功能。4 软件设计4.1 软件设计概述针对俄罗斯方块这个游戏,程序编写方面主要是通过定义好内部数组,调用随机函数随机产生的各种方块。以及根据游戏规则和选关最终确定下降的时间并作出算法。对于编程方面首先定义一个二维数组确定整个区域,以
22、及要了解游戏中所需要用到的一些特殊的函数,然后判断区域是否有方块,通过按键改变下落的位置、速度和方块的变化形状。每执行一步单片机对液晶刷一次屏,并为下一次显示做准备(即显示下一个下落的方块)。还要判断方块落下后,一行的空格是否全部填满或者所有方块是否全部填满空格,然后调用加法器把所得分数进行累加,把分数存入数组并用液晶进行显示。如果列有满格话游戏就game over,如果在相应时间得到一定分数自动进入下一关,不断的按照这样的方法循环扫描,进行相应的工作。由于源程序过长,所以这里除了最关键的程序外就不一一陈述了10。4.2 软件设计重要细节 1)工作区域和方块定义俄罗斯方块的工作区域可以利用数组
23、进行存储,即uchar xdata board2014 = 0; 用于判断方块区域是否已被占用(1表示被占用;0表示未被占用)。俄罗斯方块形状总共分为5大类,总共又有19种形状,每个形状都有四个小正方形组成,如何对这些方块进行存储是很重要的事情。我们这里采用数组和坐标的形式,具体如下图4-1和4-2所示:图4-1 图4-2 2)方块的生成、移动和旋转方块的产生很简单,调用一个随机函数就可以了。图形的移动和旋转就麻烦一点,需要先判断四周有没有障碍再进行变化。我们这里同样利用坐标,就是先计算出方块的中心点(即X轴、Y轴坐标),再计算X轴和Y轴的最大值,在可行范围内方块便可以进行相关变化。 3)碰撞
24、问题这应该是整个程序中最需要考虑的问题吧,与上一点无独有偶,在分别检测四个小正方形在改变后的实际位置后,再判断是否已经有障碍物(墙壁或方块)存在。 4)消除行满和记分行满后进行消除很简单,只需要扫描底板数组是否出现满行就可以了。因为之前有进行坐标定位,这个只需要存储Y行坐标就可以进行消除。记分更简单,直接用一个加法器就可以了;消除多行的时候采用乘法器。 5)显示下一个方块产生方块的时候我们是采用随机函数,这里显示下一个方块我们直接掉用随机函数种子就可以了。 6)至于其他游戏初始化、刷新界面、开启和暂停游戏、游戏结束等问题这里就不一一累赘了,只是简单写出它调用的函数。 (1)标记底板用于判断底板
25、状态: void Game_tetris_Sign_board(uchar x, uchar y, uchar *p) x,y-需标记底板的起始坐标;0-取消标记,1-标记;*p-被标记方块的数组名;(2)方块横向或纵向最大值: uchar Game_tetris_Count_max_value(uchar sel, uchar *p) Sel-形参;0-x轴方向,1-y轴方向 (3)游戏界面初始化void Game_tetris_Interface_init(void) (4)判断方块能否移动:void Game_tetris_Judge_move(void) 形参:dir-方向判断;(1-
26、left, 2-rignt,3-down)(5)判断能否方块旋转:void Game_tetris_Judge_spin(void) 返回值:0能,1不能(6)方块快速下移:void Game_tetris_Cube_move_down_rapid(uchar sel)(7)刷新显示界面:void Game_tetris_Refresh_interface(void)(8)显示分数:void Game_tetris_Show_score(void)(9)显示等级:void Game_tetris_Show_level(void)(10)开启和暂停游戏:void Game_tetris_Star
27、t_suspend(void)(11)判断游戏是否结束:uchar Game_tetris_End(void)(12)游戏升级:void Game_tetris_Upgrade(void)5 硬件电路设计5.1 组成设备12C5A60SR单片机一块、LCD液晶显示器一块、独立按键六个以及一些细小元件和辅助电路。5.2 电路设计这次设计的俄罗斯方块最主要的部分就是单片机的最小系统的设计,而单片机的最小系统主要由单片机、晶振电路和复位电路、电源以及辅助电路等组成。显示接口电路的设计是本设计最重要的是,对不同系统的功能需求,界面设计也不同。最初的设计是在Keil和Proteus联合进行仿真,利用C语
28、言编程,后期实际焊接生产的。这次的硬件电路采用单片机12C5A60SR控制模块提供电源,以点阵式LED显示,采用独立按键,直接在I/O口线上接上按键开关,因为设计时精简和优化了电路,所以剩余的资源还比较多,上下左右四个按键分别控制旋转、左移、右移和下降11。硬件设计图如图5-1所示:图5-1硬件电路设计图 1)供电和指示电路没有供电整个系统就无法运行,所以有个稳定的供电模块是系统平稳运行的前提和基础。电源一般分为两种,一种是利用USB数据线来供电,一种是直接采用+5V的电池供电,本设计采用USB供电。指示电路接入了发光二极管,图5-2中R10为LED的限流电阻给发光二极管提供电流。当电源接通正
29、常工作时,发光二极管会正常发光,否则不会正常工作12。 图5-2 供电和指示电路图 2)晶振电路和复位电路单片机的复位是靠外电路实现的,在时钟电路工作后,只要在单片机的RST引脚上出现24个时钟振荡脉冲以上的高电平,便可以实现到初始化状态。为了保证可靠性,通常RST引脚保持在10ms以上的电平,复位电路连接图如图5-3所示。单片机是11.0592MHz晶体和30pF电容器,是一种振荡电路。晶振的作用就是通过晶振产生时钟周期,从而来执行程序代码,这也是单片机不可或缺的13。图5-3 晶振电路和复位电路图 3)显示器电路 显示器部分是由HD61202液晶显示控制驱动器和JM12864J液晶显示器组
30、成的。HD61202液晶显示控制驱动器是一种点阵图形输出液晶显示控制器,它隐藏在64×64显示RAM中的数据,每一个对应于光明和黑暗的状态的液晶屏的点的RAM。它有64列驱动器HD61202读、写、输出,操作序列与68系列单片机是一致的,所以它可以直接连接到68系列单片机的接口。占空比为1/ 64 / 32-1。JM12864J是使用HD61202及其兼容控制驱动器作为列驱动器,同时使用HD61202作为线驱动液晶显示模块。因为HD61202不与微处理器连接,所以只要电源线驱动信号和同步信号就可以了。 显示器是本设计不可或缺的部分,俄罗斯方块设计需要用到点阵显示,所以采用LCD进行显
31、示。在液晶显示操作,单片机模拟I/O端口的读写时序使用14。图5-4 液晶显示器电路图 4)按键控制电路按键部分采用单独的六个按键,上下左右分别控制方块的变化、下落、左移和右移,另外两个控制开始和返回。 当按键按下时,与主控芯片连接的端口变为低电平,按键松开则也升为高电平。按键具有自动弹回的功能,当我们按下按钮时,接点处于接通状态;松开按钮时,接点处于切断状态,此时mcu会自动读取端口的变化来进行相应的操作。图5-5 按键控制电路图5.3 焊接与调试1)材料准备工欲善其事,必先利其器。焊接电路不仅仅是焊接几个芯片几块板子如此简单,核心在于电路的设计与调试。要做出实物,首先要选好元件,准备好辅助
32、工具。2)焊接注意事项电路焊接是一件简单确有需要足够细心的工作,如果焊接存在问题,那么即使电路原理图再正确,也不可能得出理想的测试效果。器件的选型,管脚的次序、位置、连接方向,器件是否有损坏以及焊接的点、线是不是有断开,电阻阻值是否正确准确、导线连接是否正确等问题都是需要注意的。另外在焊接的过程中操作方面也有很多问题要注意,烙铁的温度、焊接面是否光滑、焊点大小要合适、焊接时间不要太长、焊接顺序基本上是从内到外先低后高等。焊接完成后还要剪掉多余的线头,不平整的地方还要进行打磨。总而言之,要么不做焊接调试,要做就把它做好。3)电路调试个人认为电路调试的步骤是先检查电源有没有问题,再看看复位电路和时
33、钟电路,最后再检查总线之类的东西。在焊接硬件时,首先焊接电源部分,然后用万用表进行供电测试,以及测试接地引脚的电压是否正常,当全部正常时,才能装上芯片。其次,调整输入信号为零,然后调整电位器电阻,尽可能使芯片的输出是零误差,这样各级电路才能正常工作,经过调试以后接通电源接可以开始游戏了。6 游戏测试及结果实物制作完成后,接通电源开始测试游戏。游戏开始后屏幕最顶端会产生一个方块,按左键和右键方块可以以格子为单位进行左右移动,按上键方块可以互相变化,按下键方块能够加速下落(可以一直按着不动也可以间歇按键)。当方块填满一行时进行消除并进行记分;当方块堆放至屏幕最顶端时,游戏结束。 图6-1 俄罗斯方
34、块实物图1图6-2 俄罗斯方块实物图27 总 结经过一个多月的时间终于完成了毕业设计,在设计的过程中,出现了许多问题,但在老师和同学的帮助下顺利解决了。在本文中,详细分析了俄罗斯方块游戏的控制原理和详细的设计过程。本游戏机已经达到了掌上娱乐的基本要求,但在设计上还是有需要改善的地方,比如游戏不能进行关卡选择,游戏界面单一等等。整个毕业设计的过程还是挺曲折的,首先在整体框架上总是把很多程序颠三倒四导致浪费了许多时间。其次在硬件电路设计中,因为对LCD液晶显示屏不熟悉所以困难重重,甚至在购买原材料时太粗心买了一块带字符库的12864显示屏,而我需要的是不带字符库的,着前前后后又花了许多时间来重新焊
35、接和调试。还有一个老大难的问题就是源程序设计,因为汇编自己不熟悉而且又有C语言基础,所以最后还是选择了编写程序时较为复杂的C。这次设计中源程序、电路设计、电路仿真、实物制作和调试、游戏测试等这些过程真的深深让我体会到要做好一件事真的要付出很多很多。当那些一个个麻烦问题接踵而至的时候,都想过放弃,但最终还是坚持了下来,没有办法,这是毕业的最后一道坎。虽然这次的毕业设计我自己花了很多心血,但是肯定还是有不足的地方,还很请各位老师给予指导和更正。参考文献1 杨元强.酷比杯获奖作品选登LEGO 俄罗斯“酷比杯”游戏策划大赛,20072 Apress.Introduction to Visual Bas
36、ic Programming M.Professional Computing and Web Design,2006.3 张毅刚,彭喜元.单片机原理及接口技术((第六版)M.北京:人民邮电出版社,20084 高凌琴,陈青华.俄罗斯方块游戏关键技术探讨M.北京:中国青年出版社,20085 何立民.单片机高级教程(第1版)M.北京:北京航空航天大学出版社,20086 周润景.keil在MCS-51&ARM7系统中的应用百例M.北京:北京电子工业出版社,20067陈溯鹰.C语言程序设计基础教程 M.南京:南京大学出版社,20098谭浩强.C程序设计M.北京:清华大学出版社,20039张齐,
37、杜群贵著.单片机应用系统设计技术基于C语言编程M.北京:北京电子工业出版社,200410 51单片机在手持游戏机中的应用 期刊论文稿,2010-12-1611 游安弼,李玉岐.基于JavaBean组件模型的俄罗斯方块M.全国第四届Java技术及应用学术会议,200112 Jason Lam.J2ME&Gaming. Addison Wesley,200413单片机最小系统分析及应用.期刊论文稿,2009-514窦振中.单片机外围器件实用手册M. 北京:北京航空航天大学出版社,200315谢厚亮. AVR单片机的串行通信J. 电脑编程技巧与维护. 2011附 录定义
38、俄罗斯方块的结构体数组uchar code tetris_shape282 = /* shape-1* 口 口口口 口口* 口 口 口 口* 口口 口 口口口 */ 0x88,0xc0, 0xe8,0x00, 0xc4,0x40, 0x2e,0x00,/* shape-2* 口 口口 口口口* 口 口 口 口* 口口 口口口 口 */ 0x44,0xc0, 0x8e,0x00, 0xc8,0x80, 0xe2,0x00,/* shape-3* 口 * 口* 口 口口口口* 口*/ 0x88,0x88, 0xf0,0x00, 0x88,0x88, 0xf0,0x00,/* shape-4* 口
39、口* 口 口口 口口口 口口* 口口口 口 口 口 0x4e,0x00, 0x8c,0x80, 0xe4,0x00, 0x4c,0x40,/* shape-5* 口* 口口 口口* 口 口口*/ 0x8c,0x40, 0x6c,0x00, 0x8c,0x40, 0x6c,0x00,/* shape-6* 口 口口* 口口 口口* 口*/ 0x4c,0x80, 0xc6,0x00, 0x4c,0x80, 0xc6,0x00,/* shape-7* 口口* 口口*/ 0xcc,0x00, 0xcc,0x00, 0xcc,0x00, 0xcc,0x00, ; 计算方块横向或纵向的最大值;uchar
40、Game_tetris_Count_max_value(uchar sel, uchar *p) uchar i, j; uchar temp=0; uchar max_value=0; for(i=0; i<2; +i) temp = *(p+i); for(j=0; j<8; +j) if(temp & 0x80) switch(sel) case 0: if(j%4 > max_value) max_value = j%4; ; break; case 1: if(i*2+j/4 > max_value) max_value = i*2+j/4; ; br
41、eak; default: break; temp <<= 1; return (max_value+1);函数功能:游戏界面初始化;void Game_tetris_Interface_init(void)lcd12864_parallel_Init(); lcd12864_parallel_Clear_screen(0); Game_tetris_Draw_frame(); Game_tetris_Show_level(); Game_tetris_Show_score(); Game_tetris_Show_next_cube(); Game_tetris_Draw_cube
42、(cube_x, cube_y, tetris_shaperandom_value, 1); 判断方块能否移动;uchar Game_tetris_Judge_move(uchar dir, uchar *p) uchar i, j; uchar temp=0; uchar max_value=0; switch(dir) case 1: if(cube_x = 0) return 1; ; break; case 2: max_value = Game_tetris_Count_max_value(0, p); if(cube_x > 13-max_value) return 1; ;
43、 break; case 3: max_value = Game_tetris_Count_max_value(1, p); if(cube_y > 19-max_value) return 1; ; break; for(i=0; i<2; +i) temp = *(p+i); for(j=0; j<8; +j) if(temp & 0x80) switch(dir) case 1: if(boardcube_y+(i*2)+(j/4)cube_x+j%4-1=1) return 1; ; break; case 2: if(boardcube_y+(i*2)+(j
44、/4)cube_x+j%4+1=1) return 1; ; break; case 3:/下移; if(boardcube_y+(i*2)+(j/4)+1cube_x+j%4=1) return 1; ; break; temp <<= 1; return 0; bottom_sign=1;判断能否方块旋转;uchar Game_tetris_Judge_move(uchar dir, uchar *p) uchar i, j; uchar temp=0; uchar max_value=0; switch(dir) case 1: if(cube_x = 0) return 1; ; break; case 2: max_value = Game_tetris_Count_max_value(0, p); if(cube_x > 13-max_value) return 1; ; break; case 3: max_value = Game_tetris_Count_max_value(1, p)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025届青海省平安区第一高级中学高三适应性调研考试化学试题含解析
- 公司月份安全环保工作总结
- 2025届福建省厦门市湖里区双十中学高三第二次联考化学试卷含解析
- 2025年气体分离及液化设备项目合作计划书
- 一年级数学(上)计算题专项练习汇编
- 三年级数学(上)计算题专项练习附答案集锦
- 儿科安全输液的管理
- 2025年风力提水机组项目可行性建设方案
- 2025年超低频测振仪项目建议书
- 2025年智能计量终端项目合作计划书
- 跌倒坠床应急演练
- 2024年保密知识测试试题库(完整版)
- 2024年计算机软考(高级)系统架构设计师考试题库大全(含真题等)
- 家庭教育指导实操
- 小题压轴题专练23-立体几何(动点问题)-2022届高三数学一轮复习
- 物理学简明教程马文蔚等高教出版社
- 110KV变电站继电保护设计毕业设计论文
- 2024年广东东莞市公安局石排分局辅警招聘笔试参考题库附带答案详解
- 肥料、农药采购服务供货、制度保障及验收方案
- (高清版)DZT 0203-2020 矿产地质勘查规范 稀有金属类
- 中小学必背飞花令诗词-(春、月、风、花、山、江、人、日、动物、颜色、数字)
评论
0/150
提交评论