用C++(TC3.0)做的贪吃蛇游戏---.doc

用C++(TC3.0)做的贪吃蛇游戏---.doc

ID:54767804

大小:45.50 KB

页数:12页

时间:2020-04-21

用C++(TC3.0)做的贪吃蛇游戏---.doc_第1页
用C++(TC3.0)做的贪吃蛇游戏---.doc_第2页
用C++(TC3.0)做的贪吃蛇游戏---.doc_第3页
用C++(TC3.0)做的贪吃蛇游戏---.doc_第4页
用C++(TC3.0)做的贪吃蛇游戏---.doc_第5页
资源描述:

《用C++(TC3.0)做的贪吃蛇游戏---.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、用C++(TC3.0)做的贪吃蛇游戏---//游戏中使用链表的思路来自于金色甲虫站点,在此表示感谢。/*贪吃蛇游戏引擎:MADEBYEMILMATTHEW05/1/16COMPILEENVIROMENTTC3.0注意事宜1请设定好BGI文件路径2上下左右键控制蛇移动,回车键暂停,ESC键退出.*//*难点及重点:1)采用链表的结构来表示蛇对象,要求我们学会用用一个链表类.2)画图时,使用一个抽象类AbstractDraw,它的派生类有三个: Drawhead,Drawbody,Drawtail,DrawBean;分别用以画头,身体,尾部及豆子. 一开始都要画,

2、游戏过程中,只要重画头及擦去尾巴即可。3)由于TC3不支持友元,所以对链表的插入工作需要放在Snake类本身中,稍显不适。3)碰撞检测: a)用一个数组加一个随机数过程生成不与蛇相交的一个位置,画出豆子.用以标识蛇头的坐标与豆子坐标重合时,蛇增长一节。 b)与墙的碰撞检测,进行X,Y是否出界的CHECK即可.核心算法描述:1声明游戏中相关的对象及标志变量:ScreenLayOutTest;DrawheadsDh;DrawbodysDb;Cleantail  sCt… 2初始化图形库,绘制场景图形及一开始的完整的蛇。 sDh.Draw(h.getx(),h.ge

3、ty());sDb.Draw(b1.getx(),b1.gety());…. 同时用一个检测函数在不与蛇相交处随机生成一粒豆子. 3利用一个while(Gamestatur!=Exit)来控制整个游戏的进程{     4.1利用while(bioskey(1)==0)进入一个不按键时的循环{              a)Render,首先进入的动态绘制区,通过每次传回的GotBean来确定以何种方式画新的一帧:是否要增长一节?      if(GotBean)       在头部与第二节处做链表插入动作,并改变相关的方向值及mx,my,mdir值。     

4、   蛇头变蛇身,在MDIR(方向标识变量)处画蛇头。并生成新的豆子.      Else       遍历蛇的链表,把前一节的DIR(方向标识变量)传给一节(注意是从链表尾部往头部遍历),      并相应的改变mx,my及dir的值.      蛇头变蛇身,在MDIR(方向标识变量)处画蛇头,擦蛇尾.      Delay2(0.1);//自编的DELAY函数,精度0.05秒,不随机器性能而有过大变动       b)DataChecking{       1碰边检测:是,则GameStatur=Failure;       2是否咬到自己的检测.:是,则

5、GameStatur=Failure       3是否碰到障碍物:是,GameStatur=Failure       4是否吃到豆子的检测:是,则GotBean=true;       }    4.2按下键后,用key=bioskey(0);得到键值,再用        switch(key){    casekeyUp:…来做相应的数据处理。      其中:上下左右键将改变头部的dir方向。            ESC使GameStatur变成Exit;            Enter使游戏处于暂停状态,用一个内嵌的键盘检测来做.        

6、     }//LOOPINGBODY这就是贪吃游戏的核心实现了,采用链表使得算法的设计上轻松的不少,当然,实现起来其中细节另有一番推敲及改进。*/#include#include#include#include#include#include#include#include#includecharaddress[]="C:\TC\bgi";intScore=0;typedefintbool

7、;constinttrue=1;constintfalse=0;constintfudu=10;intconstKeyUp=0x4800;intconstKeyDown=0x5000;intconstKeyLeft=0x4b00;intconstKeyRight=0x4d00;intconstKeyEnter=0x1c0d;intconstKeyEsc=0x11b;voidDelay2(doubleTimes,floatSecPerFrame);enumGameStaturs{Gaming,Win,Failure,Exit};enumDirection{Up,

8、Down,Left,Right};Ga

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。