ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:25.10KB ,
资源ID:5185505      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5185505.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(贪吃蛇游戏程序设计程序.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

贪吃蛇游戏程序设计程序.docx

1、贪吃蛇游戏程序设计程序贪吃蛇游戏程序设计程序题U:贪吃蛇游戏程序设计指导录摘要 61、 设计要求 .72、 所用仪器设备 .73、 具体设计过程 .8.3.1、程序功能 83. 2设计思想 83. 3(设计的具体实现 8.3.4总体流程图 143. 5、程序代码编写及注释 153. 6调试问题及解决方法 213. 7调试结果 .22.4设计心得体会 25.5、参考文献 .26摘要编写C语言程序实现贪吃蛇游戏,贪吃蛇游戏是一个深受人们喜爱的游戏,一 条蛇在密闭的用墙内,在围墙内随机出现一个食物,通过按键盘上的四个光标键控 制蛇向上下左右四个方向移动,蛇头撞到食物,则表示食物被蛇吃掉,这时蛇的身

2、体长一节,同时计10分,接着乂出现食物,等待被蛇吃掉,如果蛇在移动过程 中,撞到墙壁或身体交义蛇头撞到自己的身体游戏结束。作为一个完整的程序,尤 其是一个完整的游戏,必须考虑人机交流与用户体验。游戏的界面不能太丑,更不 能连个简单的界面都没有。游戏应该有个比较漂亮的界面,在有必要硬件支持和软 件的支持下,游戏开发者必须最大限度的使游戏美观。游戏的美观是一方面,游戏 的内在素质是另一方面。一个游戏的优劣,最终III玩家决定。在游戏与玩家见面之 前,游戏开发者要设计一种让玩家投入的游戏模式,并且在一定的游戏规则下进 行。关键词贪吃蛇流程图C语言源程序turbo C贪吃蛇游戏程序设计1、设计要求通过

3、游戏程序设讣,提高编程兴趣与编程思路,巩固C语言中所学的知识,合 理的运用资料,实现理论与实际相结合。(1)(收集资料,分析课题,分解问题,形成总体设计思路;(2)(深入分析各个 小问题,列出大纲,编写各部分程序模块;(3)(对于设计中用到的关键函数,要学 会通过查资料,弄懂其用法,要联系问题进行具体介绍;(4) (上机调试,查错,逐步分析不能正常运行的原因,确保所设计的程序正确,并且能正常运行;(5) (完成课程设计报告,并进行答辩C语言是一种易学易懂的通用程序设计语言,山于它具有功能性强,运用简洁,灵活兼有高级语言与低级语言的优点,以及“LI标程序效率高”可移植性和能 在各种系统上普遍实现

4、等特点使它成为当今世界上的主流程序设计语言之一,同时 被选作口前全世界广泛应用,同时也是大学生必修的科LI。作为一位当代的大学生 更要很好的利用它,学好一门设计语言,实现学以至用。制作C程序报告,可以巩固和加深自己对C语言课程的基本知识的理解和掌握,并且能够掌握C语言编程和程序调试的基本技能。通过游戏程序的设讣训练可以提高自己的基本技能,更好地掌握字符串的表示 方法和字符吊函数的功能、Tc图形操作的基本知识、键盘上特殊键的获取以及图 形方式下光标的显示,提高自己编程兴趣与编程水平,学会如何正确的书写程序设 计说明文档,提高运用C语言解决实际问题的能力,巩固C语言语法规则的理解和 掌握,学会通过

5、源程序写出流程图,提高自学以及查阅资料的能力。2、 所用仪器设备1、能正常工作的计算机一台;2、WindowsXP;3、 TC 程序;4、Microsoft Word2003; 3、具体设计过程3.1、程序功能贪吃蛇游戏是一个经典小游戏,一条蛇在封闭围墙里,围墙里随机出现一个食 物,通过按键盘四个光标键控制蛇向上下左右四个方向移动,蛇头撞倒食物,则食 物被吃掉,蛇身体长一节,同时记10分,接着乂出现食物,等待蛇来吃,如果蛇 在移动中撞到墙或身体义蛇头撞倒自己身体游戏结束。3. 2设计思想程序关键在于表示蛇的图形及蛇的移动。用一个小矩形快表示蛇的一节身体, 身体每长一节,增加一个矩形块,蛇头用俩

6、节表示。移动时必须从蛇头开始,所以 蛇不能向相反的方向移动,如果不按任意键,蛇自行在当前方向上前移,但按下有 效方向键后,蛇头朝着该方向移动,一步移动一节身体,所以按下有效方向键后, 先确定蛇头的位置,而后蛇的身体随蛇头移动,图形的实现是从蛇头新位置开始画 出蛇,这时,由于未清屏的原因,原来的蛇的位置和新蛇的位置差一个单位,所以 看起来蛇多一节身体,所以将蛇的最后一节用背景色覆盖。食物的出现与消失也是 画矩形块和覆盖矩形块。为了便于理解,定义两个结构体:食物与蛇。3. 3(设计的 具体实现(1)函数定义函数定义是对各个基础函数的定义,并且设置需要运用的信息,便于调用define N 200in

7、cludegraphics. h/*图形头文件*/ itinclude /*包含 rand 等 函数*/ ttinclude /*包含 bios 函数*/ #def ine LEFT 0x4b00/*光标左键值 */ define RIGHT 0x4d00/*光标右键值*/ define DOWN 0x5000/*光标下键值*/ ttdefine UP 0x4800/*光标上键值*/ ttdefine ESC 0x011b/*ESC 的 ASCII 码*/ int i, key;/*图形坐标变量及按键变量*/ int score二0;/*得分*/int gamespeed二 10000;/*游

8、戏速度自己调整*/ struct Foodint x;/*食物的横坐标*/int y;/*食物的纵坐标*/int yes;/*判断是否要出现食物的变量*/ food;/*食物的结构体*/struct Snakeint x;/*蛇的横坐标*/int y;/*蛇的纵坐标*/int node;/*蛇的节数*/int direction;/*蛇移动方向*/int life;/*蛇的生命,0活着,1死亡*/ snake;void Init (void) :/*图形驱动*/void Close(void) ;/*图形结束*/void DrawK(void) ;/画界面函数*/void GameOver (

9、void) :/*结束游戏*/void GamePlay(void) :/*玩游戏具体过程*/ void PrScore(void) ;/*输出成绩 */ void main (void) /*主函数*/(2)主函数main()主函数是程序的主流程,首先定义使用到的常数、全局变量及函数原型说明,后初始化图形系统,调用函数DrawK() 1EI出开始画面,调用函数GamePlay () 即玩游戏的具体过程,游戏结束后调用Close ()关闭图形系统,结束程序 void main (void) /*主函数*/Init () ;/*图形驱动*/DrawK () ;/*开始画面*/GamePlay (

10、) ;/*玩游戏具体过程*/Close() ;/*图形结束*/void Init (void) /*图形驱动*/int gd二DETECT, gm;initgraph(&gd, &gm, c:tc) ; /*第一个参数表示图形适配器的类型,第二 个为在该类型下图形的显示模式,笫三个参数指定驱动程序所在口录。*/cleardevice();(3)画界面函数DrawK ()主界面是一个封闭的围墙,用两个循环语句分别在水平和垂直方向输出连续的 宽度和高度均的矩形方块,表示围墙,为了醒目,设置为白色。voidDrawK(void)/*开始画面,左上角坐标为(50, 40),右下角坐标为(610,460

11、)的围墙*/setbkcolor(O) ;/*设置当前背景颜色*/setcolor (YELLOW) ; /*设置当前画线颜色*/setlinestyle(SOLID.LINE, 0, THICK_WIDTH) ;/*设置线型*/for (i=50; i0; i-)/*蛇的每个环节往前移动,贪吃蛇的关键算法*/snake xi=snake ;snake yi二snake yi-l;switch (snake, direction) /*定义1, 2, 3, 4表示右,左,上,下四个方向,通过这 个判断来移动蛇头*/case 1: snake x0+=10;b:reak;case 2: snak

12、e x0-二10;break;case 3: snakey0-二10;break;case 4: snakey0+=10;break;for (i=3: isnake. node; i+)/*从蛇的第四节开始判断是否撞到自己了,因为蛇头为两节,第三节不可能拐过来*/if (snake xi二二snake x0&snake yi二二snake y0)GameOver () ;/*显示失败*/snake life=l;break;if (snake, x 0595 I i snake, y 0 455) /*蛇 是否撞到墙壁*/GameOver () ;/*本次游戏结束*/snake. life=

13、l; /*蛇死*/if (snake, life-1)/*以上两种判断以后,如果蛇死就跳出内循环,重新开始*/break;if (snake. xOjfood. x&snake. y0=food. y)/*吃到食物以后*/setcolor(0) ;/*把画面上的食物东西去掉*/rectangle (food, x, food, y, food, x+10, food, y-10);snake, xsnake, node =-20; snake, ysnake, node =-20; /*-20 表示尾巴长一节 */*新的一节先放在看不见的位置,下次循环就取询一节的位置*/snake, node

14、卄;/*蛇的身体长一节*/food, yes二1;/*画面上需要出现新的食物*/score+=10;PrScoreO ;/*输出新得分*/setcolor(4);for (i=0; Ksnake. node; i+)/*画出蛇*/rectangle (snake. xi_, snake. yi_, snake. xi+10,snake, yiT0);delay(gamespeed);setcolor(0) ;/*用黑色去除蛇的的最后一节*/rectangle(snake xsnake node一1, snake ysnake node一1, snake xsnake node一l+10, sn

15、ake ysnake node一1一10); /*endwhile(kbhit)*/if (snake. life=l)/*如果蛇死就跳出循环*/break;key=bioskey(0) ;/*接收按键*/if (key二二ESC)/* 按 ESC 键退出*/break;elseif(key=UP&snake direction!=4)/*判断是否往相反的方向移动*/snake direction=3;elseif (keyRIGHT&snake. direction!=2)snake direction=l;elseif(key=LEFT&snake direction!=l)snake d

16、irection=2;else辻(key二二D0WN&snake. direction!=3)snake direction=4;/*endwhile(l)*/(5)游戏结束函数GameOver ()游戏结束,清除屏幕,输出分数,显示游戏结束信息。voidGameOver (void) /* 游戏结束*/cleardevice ();PrScore ();setcolor(RED);settextstyle(0, 0, 4);outtextxy (200, 200, guojiarT);getch();vo i d PrScore (vo i d) /*输出成绩*/char str10:set

17、fillstyle(SOLID_FILL, WHITE);bar (50, 15, 200, 35);setcolor (6);settextstyle (0, 0, 2);sprintf(str, scorescore);outtextxy(55, 20, str); void Close(void)/*图形结束*/getch();closegraph();3.4总体流程图3.5、程序代码编写及注释itdefine N 200include include include defineLEFT 0x4b00 ttdefine RIGHT 0x4d00 define DOWN 0x5000 i

18、tdefine UP 0x4800 ttdefine ESC 0x011b int i, key;int score二0;/*得分*/int gamespeed二50000;/*游戏速度自己调整*/ struct Foodint x;/*食物的横坐标*/int y;/*食物的纵坐标*/int yes;/*判断是否要出现食物的变量*/ food;/*食物的结构体*/struct Snakeint xN;int yN;int node: /*蛇的节数*/int direction;/*蛇移动方向*/int life;/*蛇的生命,0活着,1死亡*/ snake;void Init (void) :

19、/*图形驱动*/void Close (void) ;/*图形结束*/void DrawK(void) ;/*开始画面*/void GameOver (void) ;/*结束游戏*/ void GamePlay (void) ;/*玩游戏具体过程*/ void PrScore(void) ;/*输出成绩*/ /*主函数*/void main(void) Init () ;/*图形驱动*/DrawK () ;/*开始画面*/GamePlay () ;/*玩游戏具体过程*/Close() ;/*图形结束*/*图形驱动*/void Init(void)int gd二DETECT, gm;initgr

20、aph(&gd, &gm, c:tc);cleardevice ();/*开始画面,左上角坐标为(50, 40),右下角坐标为(610, 460)的围墙*/void DrawK(void)/*setbkcolor(LIGHTGREEN):*/setcolor(11);set linestyle (SOLID.LINE, 0, THICK_WIDTH) : /* 设置线型*/for (i=50; i=600; i+=10)/* 画围墙水 /rectangle (i, 40, i+10, 49) ; /*上边*/rectangle (i, 451, i+10, 460) ;/*下边*/for(i=

21、40;i0; i)/*蛇的每个环节往前移动,也就是贪吃蛇的关键 算法*/snake xi=snake xi-l.;snake yi二snake yi-l_;/*1, 2, 3, 4表示右,左,上,下四个方向,通过这个判断来移动蛇头权switch(snake direction)case 1:snake. x0+=10;break;case 2: snake. x0=10;break;case 3: snake. y0=10;break;ase 4: snake, y0+=10;break; cfor (i=3; isnake. node; i+) /*从蛇的第四节开始判断是否撞到自己了,因为蛇

22、头为两节,第三节不可能拐过来*/if(snake. xi=snake. x0J&snake. yi=snake. y0)GameOver () ;/*显示失败*/snake. life=l;break;if(snake, x0595)I snake, y0455)/*蛇是否撞到墙壁*/GameOver () ;/*本次游戏结束*/snake. life=l; /*蛇死*/if (snake, life-1)/*以上两种判断以后,如果蛇死就跳出内循环,重新开始*/break;辻(snake. x0=food. x&snake. yOj=food. y) /*吃到食物以后*/setcolor(0)

23、 ;/*把画面上的食物东西去掉*/rectangle(food x, food y, food x+10, food y-10);snake xsnake node二一20;snake ysnake node二一20;/*新的一节先放在看不见的位置,下次循环就取前一节的位置*/snake. node+;/*蛇的身体长一节*/food, yes二1;/*画面上需要出现新的食物*/score+=10;PrScoreO ;/*输出新得分*/setcolor (4) ;/*画出蛇*/for(i二0;isnake node;i+)rectangle(snake xi, snake yi, snake x

24、Ei.+lO,snake yiT0);delay(gamespeed);setcolor(0) ;/*用黑色去除蛇的的最后一节*/rectangle(snake xsnake node一1, snake ysnake node一1, snake xsnake node一l+10, snake ysnake node一1一10); /*endwhile(kbhit)*/if (snake. life=l)/*如果蛇死就跳出循环*/break;key=bioskey(0) ;/*接收按键*/辻(key二二ESC)/*按 ESC 键退出*/break;elseif (keyUP&snake. direction!二4) /*判断是否往相反的方向移动*/snake direction=3;else

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1