贪吃蛇游戏程序说明2

上传人:公**** 文档编号:473028094 上传时间:2023-12-14 格式:DOC 页数:12 大小:35.50KB
返回 下载 相关 举报
贪吃蛇游戏程序说明2_第1页
第1页 / 共12页
贪吃蛇游戏程序说明2_第2页
第2页 / 共12页
贪吃蛇游戏程序说明2_第3页
第3页 / 共12页
贪吃蛇游戏程序说明2_第4页
第4页 / 共12页
贪吃蛇游戏程序说明2_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《贪吃蛇游戏程序说明2》由会员分享,可在线阅读,更多相关《贪吃蛇游戏程序说明2(12页珍藏版)》请在金锄头文库上搜索。

1、C语言程序设计之贪吃蛇一程序功能简介贪吃蛇游戏是一种典型小游戏,一条蛇在封闭围墙里,围墙里随机浮现一种食物,通过按键盘四个光标键控制蛇向上下左右四个方向移动,蛇头撞倒食物,则食物被吃掉,蛇身体长一节,同步记1分,接着又浮现食物,等待蛇来吃,如果蛇在移动中撞到墙或身体交叉蛇头撞倒自己身体游戏结束。二.程序整体设计阐明一种游戏要有开始部分,运营部分,结束部分(事实上开始部分与运营部分是一体的)。.1设计思路这个程序的核心是表达蛇的图形以及蛇的移动。用一种小矩形表达蛇的一节身体,身体每长一节,增长一种矩形块,蛇头用两节表达。移动时必须从蛇头开始,因此蛇不能向相反方向移动,也就是蛇尾不能改作蛇头。如果

2、不按任何键,蛇自行在目前方向上前移,当游戏者按了有效的方向键后,蛇头朝着指定的方向移动,一步移动一节身体,因此当按了有效的方向键后,先拟定蛇头的位置,然后蛇身体随着蛇头移动,图形的实现是从蛇头的新位置开始画出蛇,这时由于没有庆平的因素,本来蛇的位置和新蛇的位置差一种单位,因此看起来社会多一节身体,因此将蛇的最后一节用背景色覆盖。食物的浮现和消失也是画矩形块和覆盖矩形块2.2数据构造设计及用法阐明 开始部分:游戏是运营在图形模式下的,因此第一步一定是初始化图形模式,接着要有开始的界面,就像书有封面同样,我设立了一种游戏的标题画面,除了游戏标题画面我还设立了一种欢迎画面。标题画面后来,还要为游戏的

3、运营部分作初始化,涉及绘制游戏运营时的背景,对游戏某些重 要变量的初始化。运营部分:作为游戏的核心部分,这里涉及的函数比较多,也就是模块比较多,一方面让我模拟一下贪吃蛇的游戏模式:某个世界上忽然浮现一条蛇,它很短,它的运动神经异常,它没法停止自己的多动症在它的世界里就只有食物,它很饿,也很贪吃;同样在不明因素的状况下,食物从天而降,可惜的是没有落到嘴边;饥饿的主人公,不管它有无毒,也不问食物的来历,径直向食物爬去;它吃到食物啦,它超过想象的同化能力让食物不久的成为自己身体的一部分,它的身子变长啦。当它吃到第一颗食物时,上帝有给它第二颗,于是它吃了第二颗,于是又变长了,于是又有第三颗它的身子是始

4、终的加长,它不管自己过长身体的麻烦转身不便,继续吃下去,目前它是直接把巴张大,好让食物有个绿色通道。但是在某天的下午,它咬到了自己,它才想起自己是一条毒蛇,于是晕死过去(不是毒死);又或者它往食物冲锋的时候,它失去控制,撞到了墙上。第一轮循环:第一步,浮现食物;第二步,蛇不断运动;第三步,检查蛇是撞到自己或墙壁;由第四步起游戏有两条支线(A、B):A :第四步,蛇没有遇到自己或墙壁,蛇继续迈进,绘制蛇的动作;第五步,判断蛇与否吃到食物,如果蛇吃到食物,身子变长,本来的食物消失;第六步,让玩家输入控制指令,让蛇在下一轮循环的第二步变化运动方向;第七步,第二轮循环的第一步,反复第一轮的环节;B:第

5、四步,蛇遇到自己或墙壁,终结游戏。结束部分:游戏结束时,显示“GM OVR”,已经是商定俗成的规律了,我的游戏也不例外。除了游戏结束画面外,我还设立了一种游戏退出画面,“善始善终”嘛。有了上述的大体划分,我把整个程序划提成(3+2)个模块(其实就是函数)根据所需要解决的任务规定,规划输入数据和输出成果,决定寄存数据的数据构造。C语言中数据构造集中体目前数据类型上,因此在进行C语言程序设计时,应统筹规划程序中所使用的变量,数组,指针等,以及它们的类型等。这点是很重要的,如果在此期间选择不合适的变量或者数组,将来修改就十分困难。目前分析一下贪吃蛇游戏中元素,继而得出与它们相应的在程序中的描述:蛇:

6、基本描述:长度,颜色,位置。相应数据与数据类型:长度虽然可以用坐标表达,但是这样的话,运算量将很大,因此换算成较大的单位节数,以固定长度的每节描述;坐标-整型;颜色-整型;位置-X,Y坐标。增长的描述:蛇运动的方向,蛇的生命。相应数据与数据类型:这些描述是为了与程序的按键的输入部分与判断游戏结束部分相联系而设的。方向只有四个方向:上下左右。可以设立与之相应的四个整型数:3、4、2、1。生命就只有两种状况:死或生,相应0或1。食物: 基本描述:颜色,位置。相应数据与数据类型:由于颜色设成固定的,因此不再讨论。位置X、Y坐标。增长的描述:食物的存在。相应数据与数据类型:这是为了避免反复浮现食物而设

7、立的,与绘制食物的函数有联系。只有两个值:0或(没有食物或有食物)其她的元素:墙,由于它在显示上是作为背景而存在的,因此并没有什么阐明实际的墙壁就是四条直线构成的边框,由坐标描述。还需要的变量:键盘键入的键值(作为全局变量,整型);常常要使用的循环变量;自定义的填充图案;阐明文字的字符数组;游戏的记分;游戏的速度(蛇的速度)。2.各模块的功能及程序阐明重要模块的实现思路和算法的流程图阐明:核心所在蛇不断移动的akmove():蛇的不断移动,就是蛇的下一节取代前一节的位置,在计算机中就是蛇下一节的位置坐标变成前一节的位置坐标。在上文中,已定义蛇的位置坐标为数组类型,一组坐标相应一节的位置,假设有

8、i+1节,由0到i节,第i节的坐标取第i-节的坐标,第i节的坐标取第-2节的坐标直到第1节取第0节的坐标。而第0节的坐标,即蛇头的坐标要往某个方向变化,变化量为蛇每节的长度。蛇的这种坐标轮换需要循环语句使其继续下去。用一种小矩形表达蛇的一节身体,身体每长一节,增长一种矩形块,蛇头用两节表达:蛇没有遇到自己或墙壁,蛇继续迈进:游戏结束时,显示“GAMEOVER”三.程序源代码及注释:#define N 0#incegraphis.hinclude dib.hncde defeLEFT 0x40#efinRGT 0x4d#efneDON 0x500#efine P 0x4800#efin ES 0

9、x011bin ,key;int scor=0;/*得分*/i gamesped5000;*游戏速度自己调节*/struct Food int x;/*食物的横坐标* inty;/*食物的纵坐标*/ nye;/判断与否要浮现食物的变量*/fod;/食物的构造体*/struct Sak int ; intN; intnode;*蛇的节数*/ intdrectin;/*蛇移动方向* it life;/ 蛇的生命,0活着,1死亡*/nake;void In(void);/图形驱动*/vod oe(vi);/图形结束*/oid Dr(void);*开始画面*vid GaeOvr(voi);/*结束游戏

10、/viGamela(void);/*玩游戏具体过程/void PrScore(vi);/*输出成绩*/*主函数*/void ain(void) nit();*图形驱动* awK();/*开始画面* GmePla();/*玩游戏具体过程* Cse();/*图形结束/*图形驱动*oid Init(id) it g=DETCT,; iniaph(&gd,&g,c:c); leardevice();*开始画面,左上角坐标为(50,0),右下角坐标为(610,60)的围墙/voidDrawK(void)/stbkcolor(IGHTGREEN);*/ setcolr(); setlestyle(SOLD

11、_LIE,,TICK_WDH);/设立线型*/ or(=50;i=6;+=1)/*画围墙*/ ctagl(i,40,i+10,4); /*上边 rectangl(i,,+10,0);*下边/ for(i=40;i0;i-)/*蛇的每个环节往前移动,也就是贪吃蛇的核心算法*/ sn.=snak.xi1; nak.y=snke.i1; /*,2,3,4表达右,左,上,下四个方向,通过这个判断来移动蛇头*/ switch(snae.irection) cse1:snake.x+=10;brea; ase 2: ae.x0;beak; ae 3:snak.y0=10;bra; cse 4:snae.y0+=10;brak; fr(=;isnake.node;i+)/*从蛇的第四节开始判断与

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 活动策划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号