推箱子游戏--51单片机课设计(最全)_第1页
推箱子游戏--51单片机课设计(最全)_第2页
推箱子游戏--51单片机课设计(最全)_第3页
推箱子游戏--51单片机课设计(最全)_第4页
推箱子游戏--51单片机课设计(最全)_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

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

文档简介

51单片机课程设计题目基于51单片机的推箱子游戏设计目录1、课程设计目的12、课程设计题目和实现目标13、设计方案14、PROTEUS仿真原理图75、程序设计96、调试总结287、设计心得体会28参考文献29附录程序代码291、课程设计目的MCS51单片机课程设计是与MCS51单片机课程相配套的实践教学环节。MCS51单片机是一门实践性很强的专业基础课,通过课程设计,达到进一步理解单片机的硬件、软件和综合应用方面的知识,培养实践能力和综合应用能力,开拓学习积极性、主动性,学会灵活运用已经学过的知识,并能不断接受新的知识。培养大胆发明创造的设计理念,为今后就业打下良好的基础。通过课程设计,掌握以下知识和技能1单片机应用系统的总体方案的设计;2单片机应用系统的硬件设计;3单片机应用系统的软件程序设计;4单片机开发系统的应用和调试能力2、课程设计题目和实现目标21课程设计题目基于51单片机的推箱子游戏设计22实现目标设计一款在以51单片机为核心的硬件系统中运行的推箱子游戏。游戏一共9关,功能包括(1)显示游戏开机界面和游戏界面;(2)按键处理包括移动小人和移动箱子,通过移动上下左右键来控制小人的移动,通过小人推动箱子,把箱子推到指定的目的地为过关,箱子只能推不能拉;(3)用于可以任意选关,并能随时退出、进入游戏;(4)每一关都有时间计时,显示当前玩家的游戏耗时。3、设计方案根据设计目标,整个系统框图如下图1系统框图31控制模块选用ATMEL公司生产的AT89C52为主控芯片,它是是一个低电压,高性能CMOS8位单片机,主要功能特性如下1、兼容MCS51指令系统;2、8K可反复擦写大于1000次)FLASH7、2个串行中断,可编程UART串行通道;8、2个外部中断源,共8个中断源;9、2个读写中断口线,3级加密位;10、低功耗空闲和掉电模式,软件设置睡眠和唤醒功能;本次课设选用PDIP封装的AT89C52芯片,其引脚功能如图2所示,图3为最小系统图2引脚功能图3最小系统U1AT89C52,DIPF封装;C1,C222PF瓷片电容C310UF电解电容;X112M晶振R110K金属膜电阻32显示模块选用内置T6963C控制控制器的12864图形点阵液晶(以下简称LCD12864)做为显示模块。T6963C控制器的最大特点具是有硬件初始值设置功能,显示驱动所需的参数,例如占空比系数、每行驱动传输的字节数、字符的字体选择等均由引脚电平设置。所以,液晶显示模块在上电时T6963C控制器就进行初始化设置,软件操作的主要精力就可以全部用于显示界面的设计上。市场上出售此控制器的液晶很多,本次课设选用深圳市晶日达科技有限公司生产KXM12864FLCD12864和单片机以模拟方式连接,即通过模拟操作时序的方法控制液晶显示。具体的接线图如图4所示图4显示模块RP11K排阻,用于做P0口的上拉电阻;LCD1KXM12864F33按键模块16个轻触按键连接成44矩阵键盘,做为按键模块,如图5所示图544矩阵键盘最终系统的硬件系统如下图6硬件系统4、PROTEUS仿真原理图在PROTEUS搭建的仿真原理图如下图7硬件系统图8开机画面图9游戏画面图10游戏画面5程序设计51LCD12864显示驱动程序图11读写指令/数据时序图准备向LCD12864进行操作时,首先要读取LCD12864的当前的状态,只有LCD12864不忙的时候才能读写操作和数据。相关程序如下/函数名STATUS_BIT_01功能状态位STA1读/写指令,STA0(读/写数据)判断入口参数返回值状态值I/UNSIGNEDCHARSTATUS_BIT_01UNSIGNEDCHARIP00XFFCD1RD0FORI10I0IIFP1RD1RETURNI/函数名WRITE_DATAUNSIGNEDCHARDAT功能写数据入口参数8位数据DAT返回值/VOIDWRITE_DATAUNSIGNEDCHARDATWHILESTATUS_BIT_010RD1CD0WR0P0DATWR1CD1/函数名WRITE_CMD1UNSIGNEDCHARCMD功能写命令,无参数入口参数8位命令CMD返回值/VOIDWRITE_CMD1UNSIGNEDCHARCMDWHILESTATUS_BIT_010RD1CD1WR0P0CMDWR1CD0/函数名WRITE_CMD2UNSIGNEDCHARCMD功能写单参数命令入口参数8位数据DAT,8位命令CMD返回值/VOIDWRITE_CMD2UNSIGNEDCHARDAT,UNSIGNEDCHARCMDWRITE_DATADATWRITE_CMD1CMD/函数名WRITE_CMD2UNSIGNEDCHARCMD功能写双参数命令入口参数8位数据DATA1,8位数据DATA2,8位命令CMD返回值/VOIDWRITE_CMD3UNSIGNEDCHARDATA1,UNSIGNEDCHARDATA2,UNSIGNEDCHARCMDWRITE_DATADATA1WRITE_DATADATA2WRITE_CMD1CMD图12为LCD12864的指令集,向LCD12864写入相关的指令,即可控制其显示。图12LCD12864的指令集使用液晶前必须对其进行初始化操作,初始化的内容包括光标指针设置,图形区首地址,图形区宽度,显示方式设置,图形方式显示,标形状设置。相关程序如下/函数名INIT_12864功能初始化LCD12864入口参数返回值/VOIDINIT_12864WR1RD1CD1RST1/初始化WRITE_CMD30X01,0X00,0X21/光标指针设置WRITE_CMD30X00,0X00,0X42/图形区首地址WRITE_CMD316,0X00,0X43/图形区宽度WRITE_CMD10X88/显示方式设置,正常显示WRITE_CMD10X98/图形方式显示,不显示字母,只打点WRITE_CMD10XA0/光标形状设置10100N2N1N052按键扫描程序初始P1的电平为0X0F,当有按键下时,电平发生变化,开始程序开始扫描判断哪个按键被按下,并返回按键号,相关程序如下/函数名KEYS_SCAN功能按键扫描入口参数返回值按键号KEYNO/UNSIGNEDCHARKEYS_SCANUNSIGNEDCHARTMPUNSIGNEDCHARKEYNOIFP10X0FP10X0FDELAYMS1TMPP10X0FSWITCHTMPCASE1KEYNO0BREAKCASE2KEYNO1BREAKCASE4KEYNO2BREAKCASE8KEYNO3BREAKDEFAULTKEYNO16P10XF0DELAYMS1TMPP140X0FSWITCHTMPCASE1KEYNO0BREAKCASE2KEYNO4BREAKCASE4KEYNO8BREAKCASE8KEYNO12BREAKP10X0FRETURNKEYNO53游戏元素设计出现在显示画面中的游戏元素总共有6种墙壁,箱子,小人,目的地,空白,箱子在目的地。每个元素在液晶上以一个字符显示,即88的点阵。在字模提取软件设计各个元素,并获得元素的显示码。显示码的每8位构成字符的一行,8就行有8个字节。其中1表示该点显示,0表示该点不显示。图13是在字模提取软件设计的各个元素,图13小人图14墙壁图15箱子图16目的地图17箱子在目的地图18空白定义一个二维数组ELEMENTS8,存储这些点阵信息。其中第一个地址为元素代号UNSIGNEDCHARCODEELEMENTS80X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,/0空白0X3C,0X7E,0X66,0X3C,0X7E,0X99,0X3C,0X66,/1人物0X7F,0X7F,0X7F,0X00,0XEF,0XEF,0XEF,0X00,/2砖头0XFF,0XC3,0XA5,0X99,0X99,0XA5,0XC3,0XFF,/3箱子0X00,0X18,0X24,0X4A,0X52,0X24,0X18,0X00,/4目标0XFF,0XBD,0XDB,0XE7,0XE7,0XDB,0XBD,0XFF,/5箱子到达目标54元素的显示由于T6963C液晶是按以列1字符(8点),行1点来定位的,所以显示时,要先定位显示字符位的列字符和行字符首地址,即行0X80列;再定义一个循环变量I,从0,到7,定位该字符位的8个点行,即行0X80列I0X10,定位到每个点行后,写入对应的元素字节,即ELEMENTS元素代号I,就可以在液晶的指定字符位置上显示该元素了。相关元素显示子函数如下/函数名PRINTELEMENT功能指定字符位置,显示元素入口参数列字符地址XH,行字符地址YH,元素代码ELNUM返回值/VOIDPRINTELEMENTUNSIGNEDCHARXH,UNSIGNEDCHARYH,UNSIGNEDCHARELNUMUNSIGNEDCHARIINTTEMPFORI0IINCLUDE“LCD12864H“INCLUDE“KEYH“INCLUDE“BOXGAMESH“INCLUDE“TIMECOUNTH“VOIDMAINUNSIGNEDCHARKUPDATEUNSIGNEDCHARSTARTFLAGINT51_TIMEC/初始化51INIT_12864/初始化12864STARTFLAG1PLAYING0START_UIWHILE1WHILESTARTFLAG/等待确定键按下KUPDATE16IFP10X0F/若没有这句,有可能在按键扫描后执行WHILEP10X0F,就得不到按键值,使按键失效KUPDATEKEYS_SCANWHILEP10X0FSWITCHKUPDATECASE4STARTFLAG0PLAYING1BREAKCLC/清屏LEVELG0GAMEBGLEVELG/显示第一关TIMTCOUNT0TR01WHILEPLAYING/游戏中PUT_BOXSTARTFLAG1KEYCINCLUDE/函数名DELAYMSX功能按键扫描延时入口参数X延迟时间返回值/VOIDDELAYMSUNSIGNEDINTXUNSIGNEDCHARIWHILEXFORI0I40X0FSWITCHTMPCASE1KEYNO0BREAKCASE2KEYNO4BREAKCASE4KEYNO8BREAKCASE8KEYNO12BREAKP10X0FRETURNKEYNOKEYH/函数名DELAYMSX功能按键扫描延时入口参数X延迟时间返回值/EXTERNUNSIGNEDCHARKEYS_SCAN/函数名KEYS_SCAN功能按键扫描入口参数返回值按键号KEYNO/EXTERNVOIDDELAYMSUNSIGNEDINTXT6963C_LCD12864C/功能1、LCD12864显示的相关函数2、游戏操作函数/INCLUDE“T6963C_LCD12864H“INCLUDE“CGRAMH“INCLUDE“KEYH“/函数名STATUS_BIT_01功能状态位STA1读/写指令,STA0(读/写数据)判断入口参数返回值状态值I/UNSIGNEDCHARSTATUS_BIT_01UNSIGNEDCHARIP00XFFCD1RD0FORI10I0IIFP1RD1RETURNI/函数名WRITE_DATAUNSIGNEDCHARDAT功能写数据入口参数8位数据DAT返回值/VOIDWRITE_DATAUNSIGNEDCHARDATWHILESTATUS_BIT_010RD1CD0WR0P0DATWR1CD1/一定要有这一句,补完后面的时序/函数名WRITE_CMD1UNSIGNEDCHARCMD功能写命令,无参数入口参数8位命令CMD返回值/VOIDWRITE_CMD1UNSIGNEDCHARCMDWHILESTATUS_BIT_010RD1CD1WR0P0CMDWR1CD0/一定要有这一句,补完后面的时序/函数名WRITE_CMD2UNSIGNEDCHARCMD功能写单参数命令入口参数8位数据DAT,8位命令CMD返回值/VOIDWRITE_CMD2UNSIGNEDCHARDAT,UNSIGNEDCHARCMDWRITE_DATADATWRITE_CMD1CMD/函数名WRITE_CMD2UNSIGNEDCHARCMD功能写双参数命令入口参数8位数据DATA1,8位数据DATA2,8位命令CMD返回值/VOIDWRITE_CMD3UNSIGNEDCHARDATA1,UNSIGNEDCHARDATA2,UNSIGNEDCHARCMDWRITE_DATADATA1WRITE_DATADATA2WRITE_CMD1CMD/函数名INIT_12864功能初始化LCD12864入口参数返回值/VOIDINIT_12864WR1RD1CD1RST1/初始化WRITE_CMD30X01,0X00,0X21/光标指针设置WRITE_CMD30X00,0X00,0X42/图形区首地址WRITE_CMD316,0X00,0X43/图形区宽度WRITE_CMD10X88/显示方式设置,正常显示WRITE_CMD10X98/图形方式显示,不显示字母,只打点WRITE_CMD10XA0/光标形状设置10100N2N1N0/函数名CLC功能清屏入口参数返回值/VOIDCLCINTIWRITE_CMD30,0,ADD_POSFORI0I/LCD12864引脚位定义/SBITWRP20SBITRDP21SBITCDP22SBITRSTP23/T6963C命令宏定义/地址指针设置DEFINECUR_POS0X21/光标位置设置DEFINECGR_POS0X22/CGRAM偏置地址设置DEFINEADD_POS0X24/地址指针位置/显示区域设置DEFINETXT_STP0X40/文本区首地址DEFINETXT_WID0X41/文本区宽度DEFINEGRH_STP0X42/图形区首地址DEFINEGRH_WID0X43/图形区宽度/显示方式设置DEFINEMOD_OR0X80/显示方式逻辑或DEFINEMOD_XOR0X81/显示方式逻辑异或DEFINEMOD_AND0X82/显示方式逻辑与DEFINEMOD_TCH0X83/显示方式文本特征/显示状态设置DEFINEDIS_SW0X90/显示开关/D01/0光标闪烁启用/禁用/D11/0光标显示启用/禁用/D21/0文本显示启用/禁用/D31/0图形显示启用/禁用/光标形状设置DEFINECUR_SHP0XA0/光标形状选择0XA00XA7光标占的行数1行8行/数据自动读写设置/数据一次读写设置DEFINEINC_WR0XC0/数据写,地址1DEFINEINC_RD0XC1/数据读,地址1DEFINEDEC_WR0XC2/数据写,地址1DEFINEDEC_RD0XC3/数据读,地址1DEFINENOC_WR0XC4/数据写,地址不变DEFINENOC_RD0XC5/数据读,地址不变LCD12864CINCLUDEINCLUDE“LCD12864H“INCLUDE“CGRAMH“INCLUDE“KEYH“INCLUDE“T6963C_LCD12864H“INCLUDE“TIMECOUNTH“UNSIGNEDCHARMAN_X,MAN_Y/纪录当前小人所在位置UNSIGNEDCHARLEVELG/记录当前关卡UNSIGNEDCHARPLAYING,STARTFLAG/函数名SETC_XY功能定位入口参数列字符地址X,行位地址Y返回值/VOIDSETC_XYUNSIGNEDCHARX,UNSIGNEDCHARYINTTEMPTEMPY0X10XWRITE_CMD3TEMP/函数名PRINTELEMENT功能指定字符位置,显示元素入口参数列字符地址XH,行字符地址YH,元素代码ELNUM返回值/VOIDPRINTELEMENTUNSIGNEDCHARXH,UNSIGNEDCHARYH,UNSIGNEDCHARELNUMUNSIGNEDCHARIINTTEMPFORI0I8I/行地址加1TEMPYH0X80I0X10XHWRITE_CMD3TEMPWRITE_CMD2ELEMENTSELNUMI,NOC_WR/函数名SET_XY功能定位字符位置入口参数列字符地址X,行字符地址Y返回值/VOIDSET_XYUNSIGNEDCHARX,UNSIGNEDCHARYINTTEMPTEMPY0X80XWRITE_CMD3TEMP/函数名START_UI功能开机画面入口参数返回值/VOIDSTART_UIUNSIGNEDINTISETC_XY0,0FORI0I1024IWRITE_CMD2START_BOXI,INC_WRVOIDDISPLAY_TIMEUNSIGNEDI,JFORJ0J16J/第FORI0I2ISETC_XY9I,JWRITE_CMD2ZHONG_DIJ2I,INC_WR/数组的地址不要乱FOFORI0I2ISETC_XY12I,JWRITE_CMD2ZHONG_GUANJ2I,INC_WR/关FORJ0J16JFORI0I2I/列式按字符寻址的,行是按位寻址的SETC_XY9I,16JWRITE_CMD2ZHONG_YONGJ2I,INC_WR/用FORJ0J16JFORI0I2ISETC_XY12I,16JWRITE_CMD2ZHONG_SHIJ2I,INC_WR/时FORJ0J16JFORI0I2ISETC_XY14I,32JWRITE_CMD2ZHONG_MIAOJ2I,INC_WR/时/SETC_XY13I,32J/功能分解计时值的各位,并显示在响应的位置上函数名TIME_CHANGEUNSIGNEDINTTTIME入口参数计时值返回值/VOIDTIME_CHANGEUNSIGNEDINTTTIMEA5TTIME10FORJ0J16J/A1FORI0I1ISETC_XY9I,32JWRITE_CMD2SHUZIA1J,INC_WRFORJ0J16J/A2FORI0I1ISETC_XY10I,32JWRITE_CMD2SHUZIA2J,INC_WRFORJ0J16J/A3FORI0I1ISETC_XY11I,32JWRITE_CMD2SHUZIA3J,INC_WR/FORJ0J16J/A4FORI0I1ISETC_XY12I,32JWRITE_CMD2SHUZIA4J,INC_WR/函数名GAMEBG功能显示游戏本关卡游戏界面入口参数关卡代号G返回值/VOIDGAMEBGUNSIGNEDCHARGUNSIGNEDI,JFORI0I8I/行FORJ0J8J/列IFLEVELGIJ1MAN_XJMAN_YILEVEL_TEMPIJLEVELGIJ/当前关卡存入游戏缓冲PRINTELEMENTJ,I,LEVEL_TEMPIJ/显示当前关卡DISPLAY_TIMETIME_CHANGETIMTCOUNT/函数名LEVEL_SUC功能判断是否通过本关卡入口参数返回值/VOIDLEVEL_SUCUNSIGNEDCHARI,J,K1FORI0I8I/行IFK0BREAKFORJ0J8J/列IFLEVELLEVELGIJ4|LEVELLEVELGIJ5/循环扫描目标位置都有箱子在,此关卡就通过IFLEVEL_TEMPIJ5K1/此位置箱子在目标位置上ELSEK0/有目标位置没有箱子BREAKIFK1/所有目标位置都有箱子IFLEVELG8LEVELG1ELSELEVELG0/通关后重新从第一关开始TIMTCOUNT0/计时清零TH06553650000/256TL06553650000256TCOUNT0GAMEBGLEVELG/函数名KEY_UP功能按向上键的操作入口参数返回值注释含义是否等与上本位置的上一个位置目箱子的目标位置成箱子在目标位置上位置箱箱子/VOIDKEY_UPIFLEVEL_TEMPMAN_Y1MAN_X0|LEVEL_TEMPMAN_Y1MAN_X4/上目/成IFLEVELLEVELGMAN_YMAN_X4|LEVELLEVELGMAN_YMAN_X5/本,源目/成LEVEL_TEMPMAN_YMAN_X4/本目PRINTELEMENTMAN_X,MAN_Y,4ELSELEVEL_TEMPMAN_YMAN_X0/本空PRINTELEMENTMAN_X,MAN_Y,0MAN_YMAN_Y1/上人/完成一次移动LEVEL_TEMPMAN_YMAN_X1PRINTELEMENTMAN_X,MAN_Y,1ELSEIFLEVEL_TEMPMAN_Y1MAN_X3/上箱IFLEVEL_TEMPMAN_Y2MAN_X0/再上空白IFLEVELLEVELGMAN_YMAN_X4|LEVELLEVELGMAN_YMAN_X5/本,源目/成LEVEL_TEMPMAN_YMAN_X4/本目PRINTELEMENTMAN_X,MAN_Y,4ELSE/本空LEVEL_TEMPMAN_YMAN_X0PRINTELEMENTMAN_X,MAN_Y,0MAN_YMAN_Y1/上人LEVEL_TEMPMAN_YMAN_X1PRINTELEMENTMAN_X,MAN_Y,1LEVEL_TEMPMAN_Y1MAN_X3/再上箱/完成一次移动PRINTELEMENTMAN_X,MAN_Y1,3ELSEIFLEVEL_TEMPMAN_Y2MAN_X4/再上目IFLEVELLEVELGMAN_YMAN_X4|LEVELLEVELGMAN_YMAN_X5/本,源目/成LEVEL_TEMPMAN_YMAN_X4/本目PRINTELEMENTMAN_X,MAN_Y,4ELSE/本空LEVEL_TEMPMAN_YMAN_X0PRINTELEMENTMAN_X,MAN_Y,0MAN_YMAN_Y1LEVEL_TEMPMAN_YMAN_X1/上人PRINTELEMENTMAN_X,MAN_Y,1LEVEL_TEMPMAN_Y1MAN_X5/再上成PRINTELEMENTMAN_X,MAN_Y1,5ELSEIFLEVEL_TEMPMAN_Y1MAN_X5/上成IFLEVEL_TEMPMAN_Y2MAN_X0/再上空IFLEVELLEVELGMAN_YMAN_X4|LEVELLEVELGMAN_YMAN_X5/本,源目/成LEVEL_TEMPMAN_YMAN_X4/本目PRINTELEMENTMAN_X,MAN_Y,4ELSE/本空LEVEL_TEMPMAN_YMAN_X0PRINTELEMENTMAN_X,MAN_Y,0MAN_YMAN_Y1/上人LEVEL_TEMPMAN_YMAN_X1PRINTELEMENTMAN_X,MAN_Y,1LEVEL_TEMPMAN_Y1MAN_X3/再上箱PRINTELEMENTMAN_X,MAN_Y1,3ELSEIFLEVEL_TEMPMAN_Y2MAN_X4/再上目IFLEVELLEVELGMAN_YMAN_X4|LEVELLEVELGMAN_YMAN_X5/本,源目/成LEVEL_TEMPMAN_YMAN_X4/本目PRINTELEMENTMAN_X,MAN_Y,4ELSE/本空LEVEL_TEMPMAN_YMAN_X0PRINTELEMENTMAN_X,MAN_Y,0MAN_YMAN_Y1/上人LEVEL_TEMPMAN_YMAN_X1PRINTELEMENTMAN_X,MAN_Y,1LEVEL_TEMPMAN_Y1MAN_X5/再上成PRINTELEMENTMAN_X,MAN_Y1,5LEVEL_SUC/判断是否完成本关/函数名KEY_DOWN功能按向下键的操作入口参数返回值/VOIDKEY_DOWNIFLEVEL_TEMPMAN_Y1MAN_X0|LEVEL_TEMPMAN_Y1MAN_X4IFAN_Y,4ELSELEVEL_TEMPMAN_YMAN_X0PRINTELEMENTMAN_X,MAN_Y,0MAN_YMAN_Y1LEVEL_TEMPMAN_YMAN_X1PRINTELEMENTMAN_X,MAN_Y,1ELSEIFLEVEL_TEMPMAN_Y1MAN_X3IFLEVEL_TEMPMAN_Y2MAN_X0IFLEVELLEVELGMAN_YMAN_X4|LEVELLEVELGMAN_YMAN_X50MAN_YMAN_Y1LEVEL_TEMPMAN_YMAN_X1PRINTELEMENTMAN_X,MAN_Y,1LEVEL_TEMPMAN_Y1MAN_X3PRINTELEMENTMAN_X,MAN_Y1,3ELSEIFLEVEL_TEMPMAN_Y2MAN_X4IFLEVELLEVELGMAN_YMAN_X4|LEVELLEVELGMAN_YMAN_X5LEVEL_TEMPMAN_YMAN_X4PRINTELEMENTMAN_X,MAN_Y,4ELSELEVEL_TEMPMAN_YMAN_X0PRINTELEMENTMAN_X,MAN_Y,0MELSEIFLEVEL_TEMPMAN_Y1MAN_X5IFLEVEL_TEMPMAN_Y2MAN_X0IFLEVELLEVELGMAN_YMAN_X4|LEVELLEVELGMAN_YMAN_X5LEVEL_TEMPMAN_YMAN_X4PRINTELEMENTMAN_X,MAN_Y,4ELSELEVEL_TEMPMAN_YMAN_X0PRINTELEMENTMAN_X,MAN_Y,0MAN_YMAN_Y1LEVEL_TEMPMAN_YMAN_X1PRINTELEMENTMAN_X,MAN_Y,1LEVEL_TEMPMAN_Y1MAN_X3PRINTELEMENTMAN_X,MAN_Y1,3ELSEIFLEVEL_TEMPMAN_Y2MAN_X4IFLEVELLEVELGMAN_YMAN_X4|LEVELLEVELGMAN_YMAN_X5LEVEL_TEMPMAN_YMAN_X4PRINTELEMENTMAN_X,MAN_Y,4ELSELEVEL_TEMPMAN_YMAN_X0PRINTELEMENTMAN_X,MAN_Y,0LEVEL_SUC/函数名KEY_LEFT功能按向左键的操作入口参数返回值/VOIDKEY_LEFTIFLEVEL_TEMPMAN_YMAN_X10|LEVEL_TEMPMAN_YMAN_X14IFLEVE,MAN_Y,4ELSELEVEL_TEMPMAN_YMAN_X0PRINTELEMENTMAN_X,MAN_Y,0MAN_XMAN_X1LEVEL_TEMPMAN_YMAN_X1PRINTELEMENTMAN_X,MAN_Y,1ELSEIFLEVEL_TEMPMAN_YMAN_X13IFLEVEL_TEMPMAN_YMAN_X20IFLEVELLEVELGMAN_YMAN_X4|LEVELLEVELGMAN_YMAN_X5LEVEL_TEMPMAN_YMAN_X4PRINTELEMENTMAN_X,MAN_Y,4ELSELEVEL_TEMPMAN_YMAN_X0PRINTELEMENTMAN_X,MAN_Y,0MAN_XELSEIFLEVEL_TEMPMAN_YMAN_X24IFLEVELLEVELGMAN_YMAN_X4|LEVELLEVELGMAN_YMAN_X5LEVEL_TEMPMAN_YMAN_X4PRINTELEMENTMAN_X,MAN_Y,4ELSELEVEL_TEMPMAN_YMAN_X0X15PRINTELEMENTMAN_X1,MAN_Y,5ELSEIFLEVEL_TEMPMAN_YMAN_X15IFLEVEL_TEMPMAN_YMAN_X20IFLEVELLEVELGMAN_YMAN_X4|LEVELLEVELGMAN_YMAN_X5LEVEL_TEMPMAN_YMAN_X4PRINTELEMENTMAN_X,MAN_Y,4ELSELEVEL_TEMPMAN_YMAN_X0PRINTELEMENTMAN_X,MAN_Y,0MAN_XMAN_X1LEVEL_TEMPMAN_YMAN_X1PRINTELEMENTMAN_X,MAN_Y,1LEVEL_TEMPMAN_YMAN_X13ELSELEVEL_TEMPMAN_YMAN_X0PRINTELEMENTMAN_X,MAN_Y,0MAN_XMAN_X1LEVEL_SUC/函数名KEY_RIGHT功能按向右键的操作入口参数返回值/VOIDKEY_RIGHTIFLEVEL_TEMPMAN_YMAN_X10|LEVEL_TEMPMAN_YMAN_X14IFLEVELLEVELGMAN_YMAN_X4|LEVELLEVELGMAN_YMAN_X5LEVEL_TEMPMAN_YMAN_X4PRINTELEMENTMAN_X,MAN_Y,4ELSELEVEL_TEMPMAN_YMAN_X0PRINTELEMENTMAN_X,MAN_Y,0MAN_XMAN_X1IFLEVELLEVELGMAN_YMAN_X4|LEVELLEVELGMAN_YMAN_X5LEVEL_TEMPMAN_YMAN_X4PRINTELEMENTMAN_X,MAN_Y,4ELSELEVEL_TEMPMAN_YMAN_X0PRINTELEMENTMAN_X,MAN_Y,0MAN_XMAN_X1LEVEL_TEMPMAN_YMAN_X1LEVEL_TEMPMAN_YMAN_X4PRINTELEMENTMAN_X,MAN_Y,4ELSELEVEL_TEMPMAN_YMAN_X0PRINTELEMENTMAN_X,MAN_Y,0MAN_XMAN_X1LEVEL_TEMPMAN_YMAN_X1PRINTELEMENTMAN_X,MAN_Y,1LEVEL_TEMPMAN_YMAN_X15PRINTELEMENTMAN_X1,MAN_Y,5ELSEIFLEVEL_TEMPMAN_YMAN_X15IFLEVEL_TEMPMAN_YMAN_X20ELSELEVEL_TEMPMAN_YMAN_X0PRINTELEMENTMAN_X,MAN_Y,0MAN_XMAN_X1LEVEL_TEMPMAN_YMAN_X1PRINTELEMENTMAN_X,MAN_Y,1LEVEL_TEMPMAN_YMAN_X13PRINTELEMENTMAN_X1,MAN_Y,3ELSEIFLEVEL_TEMPMAN_YMAN_X24IFLEVELLEVELGMAN_YMAN_X4|LEVELLEVELGMAN_YMAN_X5MAN_XMAN_X1LEVEL_TEMPMAN_YMAN_X1PRINTELEMENTMAN_X,MAN_Y,1LEVEL_TEMPMAN_YMAN_X15PRINTELEMENTMAN_X1,MAN_Y,5LEVEL_SUC/函数名VOIDPUT_BOX功能推箱子游戏规则入口参数返回值/VOIDPUT_BOXUNSIGNEDINTKEYUPDATEKEYUPDATE16IFP10X0F/若没有这句,有可能在按键扫描后执行WHILEP10X0F,就得不到按键值,使按键失效KEYUPDATEKEYS_SCANWHILEP10X0FSWITCHKEYUPDATECASE0KEY_UPBREAKCASE1KEY_DOWNBREAKCASE2KEY_LEFTBREAKCASE3KEY_RIGHTBREAKCASE4PLAYING0STARTFLAG1TIMTCOUNT0TR00CLCSTART_UIBREAK/退出游戏TIMECOUNTCINCLUDE“BOXGAMESH“INCLUDE“REG51H“UNSIGNEDINTTIMTCOUNTUNSIGNEDCHARTCOUNTVOIDINT51_TIMECEA1TMOD0X11ET01TR00TH06553650000/256TL06553650000256VOIDT0_TTINTERRUPT1TH06553650000/256TL06553650000256TCOUNTIFTCOUNT20TCOUNT0TIMTCOUNTTIME_CHANGETIMTCOUNTTIMECOUNTHEXTERNUNSIGNEDINTTIMTCOUNTEXTERNUNSIGNEDCHARTCOUNTEXTERNVOIDINT51_TIMECEXTERNVOIDT0_TTCGRAMCUNSIGNEDCHARCODEELEMENTS80X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,/0空白0X3C,0X7E,0X66,0X3C,0X7E,0X99,0X3C,0X66,/1人物0X7F,0X7F,0X7F,0X00,0XEF,0XEF,0XEF,0X00,/2砖头0XFF,0XC3,0XA5,0X99,0X99,0XA5,0XC3,0XFF,/3箱子0X00,0X18,0X24,0X4A,0X52,0X24,0X18,0X00,/4目标0XFF,0XBD,0XDB,0XE7,0XE7,0XDB,0XBD,0XFF,/5箱子到达目标/0X24,0X7E,0X66,0X3C,0X7E,0X99,0XBD,0X24/人物样式2/游戏关卡一共9关数字符号表示人物1砖头2箱子3目的4成功5/UNSIGNEDCHARCODELEVEL88/第0关/0,0,2,2,2,2,2,0,2,2,2,0,0,0,2,0,2,0,3,0,2,0,2,2,2,0,2,0,0,4,0,2,2,0,0,0,0,2,0,2,2,2,0,2,0,0,0,2,0,2,1,0,0,2,2,2,0,2,2,2,2,2,0,0,/第1关/2,2,2,2,2,2,2,2,2,0,0,0,0,0,1,2,2,0,0,0,5,0,0,2,2,0,0,2,2,2,2,2,2,2,0,0,2,0,0,0,2,0,3,0,2,0,0,0,2,0,0,4,2,0,0,0,2,2,2,2,2,0,0,0,/第2关/0,0,2,2,2,2,0,0,0,0,2,4,4,2,0,0,0,2,2,0,4,2,2,0,0,2,0,0,3,4,2,0,2,2,0,3,0,0,2,2,2,0,0,2,3,3,0,2,2,0,0,1,0,0,0,2,2,2,2,2,2,2,2,2,/第3关/0,0,0,2,2,2,2,0,0,2,2,2,0,1,2,0,0,2,0,0,3,0,2,0,2,2,0,2,0,2,2,2,2,0,0,2,0,2,4,2,2,0,2,0,0,3,4,2,2,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,/第4关/0,0,0,2,2,2,2,0,0,2,2,2,0,1,2,0,0,2,0,0,3,0,2,0,2,2,0,2,0,2,2,2,2,0,0,2,0,2,4,2,2,0,2,0,0,0,0,2,2,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,/第5关/0,0,0,2,2,2,2,0,0,2,2,2,0,1,2,0,0,2,0,0,3,0,2,0,2,2,0,2,0,2,2,2,2,0,0,2,0,2,4,2,2,0,2,0,0,3,4,2,2,0,3,0,0,0,4,2,2,2,2,2,2,2,2,2,/第6关/0,0,2,2,2,2,2,0,2,2,2,0,0,0,2,0,2,0,3,0,2,0,2,2,2,0,2,0,0,4,0,2,2,0,0,0,0,2,0,2,2,2,3,2,4,0,0,2,0,2,1,0,0,2,2,2,0,2,2,2,2,2,0,0,/第7关/0,2,2,2,2,0,0,0,2,2,0,0,2,0,0,0,2,1,3,0,2,0,0,0,2,2,3,0,2,2,0,0,2,2,0,3,0,2,0,0,2,4,3,0,0,2,0,0,2,4,4,5,4,2,0,0,2,2,2,2,2,2,0,0,/第8关/0,0,0,2,2,2,2,0,0,2,2,2,0,0,2,0,2,2,0,1,3,0,2,0,2,0,4,3,0,0,2,0,2,0,4,5,0,2,2,0,2,0,4,3,0,2,0,0,2,2,0,0,2,2,0,0,0,2,2,2,2,0,0,0,/开机画面UNSIGNEDCHARCODESTART_BOX0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XE0,0X7C,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFC,0X7C,0XC0,0X06,0X30,0XC6,0X00,0X1F,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0X01,0X86,0XC7,0XF0,0X06,0X1F,0XC7,0XF8,0X30,0X00,0X01,0XC0,0X00,0X00,0X00,0X00,0X01,0X87,0X86,0X18,0X0C,0X01,0X80,0X0C,0X30,0X00,0X00,0XC0,0X00,0X00,0X00,0X00,0X01,0X87,0X82,0X18,0X1C,0X01,0X80,0X0E,0X30,0X00,0X00,0X40,0X00,0X00,0X00,0X00,0X01,0X87,0X06,0X0C,0X18,0X01,0X00,0X06,0X30,0X00,0X00,0X40,0X00,0X00,0X00,0X00,0X0F,0X87,0X07,0X0F,0X10,0X03,0X00,0X0C,0X30,0X00,0X00,0XC0,0X00,0X00,0X00,0X00,0X0C,0X06,0X00,0X01,0X90,0X43,0X00,0X0C,0X1F,0XFF,0X01,0X80,0X00,0X00,0X00,0X00,0X0C,0X06,0X00,0X01,0X98,0XC3,0X08,0X38,0X00,0X3E,0X03,0X00,0X00,0X00,0X00,0X00,0X0C,0X0C,0X00,0X01,0X8F,0XC3,0X1C,0X38,0X00,0X3C,0X06,0X00,0X00,0X00,0X00,0X00,0X0C,0X0C,0X00,0X03,0X1F,0XC7,0XFC,0X7C,0X7F,0XF6,0X0F,0XE0,0X00,0X00,0X00,0X00,0X0F,0X88,0X1E,0X1F,0X1C,0X7F,0X67,0XDC,0XC0,0X03,0X18,0X30,0X00,0X00,0X00,0X00,0X01,0X8C,0X00,0X03,0X18,0X01,0X80,0X0C,0XC0,0X01,0XF0,0X30,0X00,0X00,0X00,0X00,0X03,0X87,0X80,0X03,0X10,0X00,0X80,0X0C,0XC0,0X00,0X00,0X30,0X00,0X00,0X00,0X00,0X0E,0X01,0X80,0X03,0X10,0X00,0X9F,0X0C,0XC0,0X00,0X00,0X30,0X00,0X00,0X00,0X00,0X0C,0X01,0X80,0X03,0X18,0X0F,0X80,0X0C,0XC0,0X00,0X00,0X30,0X00,0X00,0X00,0X00,0X0C,0X01,0X9E,0X1F,0X0E,0X1B,0X80,0X0C,0XC0,0X00,0X00,0X30,0X00,0X00,0X00,0X00,0X0C,0X03,0X00,0X03,0X0E,0X31,0X00,0X0C,0X7F,0XF0,0X7F,0XE0,0X00,0X00,0X00,0X00,0X0C,0X06,0X00,0X03,0X1C,0X30,0X9F,0X0C,0X00,0X30,0X60,0X00,0X00,0X00,0X00,0X00,0X07,0X86,0X00,0X03,0X38,0X30,0XC0,0X0C,0X00,0X30,0X60,0X00,0X00,0X00,0X00,0X00,0X01,0X86,0X1E,0X1F,0X30,0X18,0XC

温馨提示

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

评论

0/150

提交评论