吃金豆游戏的设计_第1页
吃金豆游戏的设计_第2页
吃金豆游戏的设计_第3页
吃金豆游戏的设计_第4页
吃金豆游戏的设计_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

一、C文本模式编程显示器有两种工作模式文本模式和图形模式。系统默认为文本模式,在此模式下屏幕输入输出的单位都是字符(ASCII字符及扩充字符)。可以为字符设置字符颜色,背景色和是否闪烁等属性。屏幕坐标系在文本方式下整个屏幕被划分成25行,80列,坐标原点在屏幕的左上角如下图所示。字符屏幕(1,1)7980232425XY图11字符屏幕坐标系TC提供了字符屏幕函数。字符屏幕的核心是窗口WINDOW,它是屏幕的活动部分,字符显示或输出在活动窗口中进行。窗口在缺省时,就是整个屏幕。窗口可以根据需要指定其大小。1、WINDOW函数功能用于在指定位置建立一个字符窗口。用法VOIDWINDOWINTLEFT,INTTOP,INTRIGHT,INTBOTTOM说明参数LEFT,TOP为窗口左上角坐标参数RIGHT,BOTTOM为其右下角坐标。若有一个坐标是无效的,则WINDOW函数不起作用。一旦该函数调用成功,那么所有定位坐标都是相对于窗口的,而不是相对于整个屏幕。但是建立窗口所用的坐标总是相对整个屏幕的绝对坐标,而不是相对当前窗口的相对坐标。这样用户就可以根据各种需要建立多个互不嵌套的窗口。例11窗口使用例INCLUDEINTMAINTEXTBACKGROUNDBLACKCLRSCR/清屏WINDOW25,10,50,20TEXTCOLORBLUETEXTBACKGROUNDYELLOWCLRSCR/在新窗口中清屏CPRINTF“HELLO“/在新窗口左上角显示HELLOGOTOXY1,2/(1列,2行)坐标是相对于新窗口的TEXTCOLORREDTEXTBACKGROUNDGREENCPRINTF“TC20“WINDOW1,1,80,25/恢复系统设置的窗口,同时坐标位置自动设为(1,1)CPRINTF“BEGIN“GOTOXY1,25CPRINTF“END“RETURN0运行效果如下图2、键盘捕获BIOSKEY函数在键盘内有一个微处理器,用来扫描和检测每个键的按下和抬起状态,如有键按下则返回该按键扫描码方法直接使用声明在BIOSH中的库函数BIOSKEY;说明关于按键捕获函数BISOKEY的使用,请参见TC库函数使用手册。例12以下是一个检测按键扫描码的程序。DEFINEESC0X11BINTMAINWHILE1WHILEBIOSKEY10/等待按键,无键按下BIOSKEY1反回0KEYBIOSKEY0/BIOSKEY0读取键盘按键,并返回键的扫描码PRINTF“0XXN”,KEYIFKEYESCBREAKRETURN0请思考当你按下光标控制键上,下,左,右键时,它们的扫描码分别是多少例13调试程序以下是一个用键盘方向键控制小人移动的程序,小人用特殊字符表示。源程序FACECINCLUDEINCLUDEINCLUDEDEFINEUP0X4800DEFINEDOWN0X5000DEFINELEFT0X4B00DEFINERIGHT0X4D00DEFINEESC0X11BVOIDBORDERINTI,JTEXTBACKGROUNDBLACKCLRSCRFORI20IDEFINEWIDTH150/窗口的宽度/DEFINEHEIGHT100/窗口的高度/INTMAXXINTMAXYVOIDINIT/图形模式的初始化/VOIDSHOWTEXT/显示文本/VOIDDRAWK/画图形/INTMAININITSHOWTEXTDRAWKCLOSEGRAPHRETURN0VOIDINITINTGDRIVER,GMODEGDRIVERDETECTINITGRAPHMAXXGETMAXXMAXYGETMAXYSETBKCOLORBLACK/设置背景色为黑色/CLEARDEVICE/清屏/VOIDSHOWTEXTCHARSTR50SPRINTFSTR,“D,D“,MAXX,MAXY/将要显示的分辩率以字符串形式保存到STR/OUTTEXTXYMAXX/4,MAXY/4,STR/在指定位置显示字符串STR/VOIDDRAWKINTSTARTX,STARTYSTARTXMAXXWIDTH/2STARTYMAXYHEIGHT/2SETVIEWPORTSTARTX,STARTY,STARTXWIDTH1,STARTYHEIGHT1,0SETCOLORWHITERECTANGLE0,0,WIDTH,HEIGHTSETCOLORYELLOWLINE0,0,WIDTH,HEIGHTLINEWIDTH,0,0,HEIGHTCIRCLEWIDTH/2,HEIGHT/2,30GETCH/暂停,任意健继续例22用若干个小矩形块画一个围墙的效果,如下图参考代码INCLUDEINTMAXXINTMAXYVOIDINITINTDRIVER,MODEDRIVERDETECTINITGRAPHMAXXGETMAXX1MAXYGETMAXY1VOIDDRAWWALLVOIDINTI,JINTLEFT,RIGHT,TOP,BOTTOMSETBKCOLOR0CLEARDEVICESETCOLOR11SETLINESTYLE0,0,3LEFT50RIGHTMAXX50TOP50BOTTOMMAXY50FORILEFTIINTMAININTGDRIVER,GMODEGDRIVERDETECTINITGRAPHCLEARDEVICESETBKCOLORBLUESETVIEWPORT40,40,600,440,1/定义图形视口/SETFILLSTYLE1,2/单色实填,填充色绿色/SETCOLORYELLOWRECTANGLE0,0,560,400/画矩形框1/FLOODFILL50,50,YELLOW/绿色填充矩形框1/RECTANGLE20,20,540,380/画矩形框2/SETFILLSTYLE1,13FLOODFILL21,300,YELLOW/洋红色填充矩形框2/SETCOLORBLACKSETTEXTSTYLE1,0,6/三倍笔划字型,水平,字体大小取6倍/OUTTEXTXY100,60,“WELCOMEYOU“GETCHCLOSEGRAPHRETURN022动画技术方法一利用CLEARDEVICE和DELAY函数相互配合,先画一幅图形,让它延迟一个时间,然后清屏,再画另一幅,如此反复,形成动态效果。例24实现一个字符串左右运动效果。INCLUDEINCLUDEINCLUDEINTMAXX,MAXYVOIDONECHARSTRINTMAININTGDRIVER,GMODECHARSTR“WELCOME“GDRIVERDETECTINITGRAPHCLEARDEVICESETTEXTJUSTIFYCENTER_TEXT,CENTER_TEXTMAXXGETMAXXMAXYGETMAXYWHILEBIOSKEY10/当没有键按下时/ONESTRGETCHCLOSEGRAPHRETURN0VOIDONECHARSTRINTIFORI0IVOIDINITINTGDRIVER,GMODE,SIZEGDRIVERDETECTINITGRAPHSETBKCOLORBLUE/设置蓝色背景色/CLEARDEVICE/清屏/VOIDDRAWCIRCLEINTX0,INTY0,INTRINTX,YXX0R/2YY0R/2SETCOLORYELLOWSETLINESTYLE0,0,1SETFILLSTYLE1,5CIRCLEX,Y,R/画圆/FLOODFILLX,Y,YELLOW/填充圆/VOIDMOVEINTX0,Y0,INTRINTI,SIZEVOIDBUFFERSIZEIMAGESIZEX0,Y0,X02R,Y02R/计算图像占字节数/BUFFERCHARMALLOCSIZE/分配内存缓冲区(字节)/GETIMAGEX01,Y01,X02R1,Y02R1,BUFFER/存图像/PUTIMAGE500,Y01,BUFFER,COPY_PUT/复制图像到新位置/DOFORI0IDEFINEROW8/表示棋盘的行数/DEFINECOL8/表示棋盘的列数/DEFINEW40/表示一个方块的宽度/DEFINEH40/表示一个方块的高度/DEFINEORGX50/表示棋盘在屏幕上的起始X坐标/DEFINEORGY50/表示棋盘在屏幕上的起始Y坐标/VOIDDRAWTABLEVOIDINTI,JFORI0IVOIDINITBALLBALLBALL,INTR,INTC,INTDBALLRRBALLCCBALLDDVOIDDRAWBALLBALLBALLINTX0,Y0/圆心取小方块的中心/X0ORGXBALLCWW/2/计算圆周心坐标在小方块的中心/Y0ORGYBALLRHH/2SETCOLORREDSETFILLSTYLE1,REDFILLELLIPSEX0,Y0,10,10STEP3画棋盘和一个棋子修改MAINC/MAINC/INCLUDE“BALLH”INTMAINBALLMYBALL/定义一个棋子变量/INIT/图形模式初始化/DRAWTABLE/画棋盘/INITBALL/初始化一个棋子/DRAWBALLMYBALL/画棋子/RETURN0STEP4让棋子动起来重新定义棋子的结构,为其增加运动方向的属性,及其与运动相关的函数/BALLH头文件/IFNDEFBALL_H_HDEFINEBALL_H_HENUMDIRECTIONUP,DOWN,LEFT,RIGHT/定义四种运动方向/TYPEDEFSTRUCTINTR,C/棋子在棋盘上的的行,列坐标/INTD/棋子的直径/ENUMDIRECTIONDIR/运动方向/BALLVOIDINITBALLBALLBALL,INTR,INTC,INTD/棋子初始化/VOIDDRAWBALLBALLBALL/画棋子/VOIDCLEARBALLBALLBALL,CHARBUFF/清除棋子/VOIDCHANGEDIRBALLBALL,ENUMDIRECTIONDIR/调整运动的方向/VOIDMOVEBALLBALL,INTROLS,INTCOLS/棋子移动,参数ROLS,COLS棋盘的总行列数/ENDIF/BALLC实现文件/INCLUDE“BALLH“INCLUDEVOIDMOVEBALLBALL,INTROLS,INTCOLSSWITCHBALLDIRCASEUPBALLRIFBALLRRROLS1BREAKCASEDOWNBALLRIFBALLRROLSBALLR0BREAKCASELEFTBALLCIFBALLCCCOLS1BREAKCASERIGHTBALLCIFBALLCCOLSBALLC0BREAKVOIDCHANGEDIRBALLBALL,ENUMDIRECTIONDIRBALLDIRDIRVOIDCLEARBALLBALLBALL,CHARBUFF/清除棋子/INTX0,Y0X0ORGXBALLCWY0ORGYBALLJHPUTIMAGEX0,Y0,BUFF,COPY_PUT修改MAINC/MAINC/INCLUDE“BALLH”DEFINEKEY_UP0X4800DEFINEKEY_DOWN0X5000DEFINEKEY_LEFT0X4B00DEFINEKEY_RIGHT0X4D00DEFINEESC0X11BINTMAINBALLMYBALL/定义一个棋子变量/INIT/图形模式初始化/DRAWTABLE/画棋盘/INIT/初始化一个棋子/DRAWBALLMYBALL/画棋子/WHILE1IFBIOSKEY10/如没有按键,棋子按预定方向运动/DELAY500/延时05秒/BUFFGETBUFFER/如何实现参考例25/CLEARBALLMYBALL,BUFF/清除当前位置的棋子/MOVE/棋子移动到新位置/DRAWBALLMYBALL/在新位置画棋子/ELSEKEYBIOSKEY0SWITCHKEYCASEKEY_UPCHANGEDIRBREAKCASEKEY_DOWNCHANGEDIRBREAKCASEKEY_LEFTCHANGEDIRBREAKCASEKEY_RIGHTCHANGEDIRBREAKCASEESCEXIT0RETURN0三、吃金豆游戏的分析与设计1、游戏功能分析1游戏基本功能游戏屏幕是一个NXN的网格,其中某些格子是固定的墙壁,其他网格是可以通行的,开始的时候放满了金豆。游戏开始后,玩家通过键盘的方向键控制游戏主角PACMAN移动,经过的地方,金豆被吃掉,同时加分。游戏屏幕上还有一个怪物,它会随机地移动。PACMAN如果碰到怪物,游戏失败。如果吃掉了全部金豆,则游戏成功。2游戏场景(即墙壁和金豆的位置,PACMAN与怪物的初始位置等信息)是从文件SCENETXT中读到的。格式如下10,10/10,10代表场景总的行,列数1111111111/第一行,10列,其中1表示墙;0表示金豆1A11100001/第二行中A代表PACMAN的初始位置1000101101111010110110000001011011011101101101000110110001011M000100M1/这一行中的M代表一个MONSTER的初始位置,二个M代表两个妖怪1111111111数据文件对应的游戏场景如下图所示2、游戏出现的各个对象PACMANMONSTERBEANWALLSCENEEMPTY分析一个场景分成N行N列的小CELL,每个CELL有行,列等属性。PACMAN,MONSTER,BEAN,WALL,EMPTY又可看作是一个特殊的CELL。PACMAN和MONSTER是可运动的,而BEAN和WALL是静止的,此外它们场景在绘出来的图像也各不相同。21数据结构的定义1静止的CELL,分为三种类型,定义如下DEFINEEMPTY0DEFINEWALL1DEFINEBEAN2DEFIENCELL_SIZE32TYPEDEFSTRUCTINTKIND/CELL的类型/INTROWINTCOLCELL与CELL相关的函数定义VOIDDRAWCELLCELLT/画出一个CELL/SWI

温馨提示

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

评论

0/150

提交评论