当前位置:文档之家› 贪吃蛇游戏程序设计

贪吃蛇游戏程序设计

测控技术与仪器专业课程设计题单班级0982011 学生刘某某课程名称计算机课程设计课题贪吃蛇游戏程序设计设计要求 1.学习游戏设计有关知识。

2.设计贪吃蛇游戏程序。

3.调试并修改程序。

4.完成课程设计论文。

课题发给日期2011年6月25日课程设计完成日期2011年7月09日指导教师余某某评语:贪吃蛇游戏学生姓名:刘某某班级:0882011指导老师:余某某摘要:编写C语言程序实现贪吃蛇游戏,贪吃蛇游戏是一个深受人们喜爱的游戏,一条蛇在密闭的围墙内,在围墙内随机出现一个食物,通过按键盘上的四个光标键控制蛇向上下左右四个方向移动,蛇头撞到食物,则表示食物被蛇吃掉,这时蛇的身体长一节,同时计10分,接着又出现食物,等待被蛇吃掉,如果蛇在移动过程中,撞到墙壁或身体交叉蛇头撞到自己的身体游戏结束。

作为一个完整的程序,必须考虑人机交流与用户体验。

游戏的界面不能太丑,更不能连个简单的界面都没有。

游戏应该有个比较漂亮的界面,在有必要硬件支持和软件的支持下,游戏开发者必须最大限度的使游戏美观。

游戏的美观是一方面,游戏的内在素质是另一方面。

一个游戏的优劣,最终由玩家决定。

在游戏与玩家见面之前,游戏开发者要设计一种让玩家投入的游戏模式,并且在一定的游戏规则下进行。

关键词:贪吃蛇流程图c语言源程序目录1 前言 (1)2 课设内容 (3)2.1课设目的 (3)2.2设计功能 (3)2.3结构设计 (7)3结论 (11)参考文献 (15)附录A (16)1 前言C语言是一种易学易懂的通用程序设计语言,由于它具有功能性强,运用简洁,灵活兼有高级语言与低级语言的优点,以及“目标程序效率高”可移植性和能在各种系统上普遍实现等特点使它成为当今世界上的主流程序设计语言之一,同时被选作目前全世界广泛应用,同时也是大学生必修的科目。

作为一位当代的大学生更要很好的利用它,学好一门设计语言,实现学以至用。

制作C程序报告,可以巩固和加深自己对C语言课程的基本知识的理解和掌握,并且能够掌握C语言编程和程序调试的基本技能。

通过游戏程序的设计训练可以提高自己的基本技能,更好地掌握字符串的表示方法和字符串函数的功能、Tc图形操作的基本知识、键盘上特殊键的获取以及图形方式下光标的显示,提高自己编程兴趣与编程水平,学会如何正确的书写程序设计说明文档,提高运用C语言解决实际问题的能力,巩固C语言语法规则的理解和掌握,学会通过源程序写出流程图,提高自学以及查阅资料的能力。

C语言课程应注重边学边练,但由于课堂教学和实验的深度和广度有限,练习的深度也受到一定限制。

为了弥补这一点,学校开设了本课程设计。

它比教学实验复杂一些,涉及的深度广些并更加接近实用。

目的是通过课程设计的综合训练,培养我们实际分析问题、编程和动手能力,最终目标是想通过这种形式,帮助我们系统地掌握程序设计的主要内容,更好地完成学业。

这次课程设计的主要特点如下:1.函数定义是要做到顾名思义是很重要的,它对读程序的人正确认识程序十分重要,在修改这个程序的过程中也能很快找到程序各模块的作用,大大增加了程序的可读性。

2.分析函数先从main()函数入手。

Main()函数是C源程序编译时的开始,从main()函数开始读函数可将其他函数的功能理解得更透彻。

3.在做程序的时候先列框架,将这个程序所要达到的目的(功能)分析出来,选择正确的数据结构然后在将程序模块化,按照模块编写函数更加简单合理。

4.我还了解了很多的库函数的作用,如字符串函数中有很多对字符串进行处理的函数,起功能我都有所了解。

5.它独立于具体的C语言教科书,重点放在C语言的基本特征上,以"不变"应"万变",涵盖C语言的重要基础知识,让我们熟练掌握C语言的实际使用。

6.结合实际应用的要求,使课程设计既覆盖知识点,又接近工程实际需要。

激发学习兴趣,调动我们主动学习的积极性,并会根据实际编程要求,训练自己实际分析问题的能力及编程能力,并养成良好的编程习惯。

7.提供综合的课程设计理念,以期进一步锻炼学生的动手能力。

同时让同学合作完成这些实验,以便锻炼互相合作精神,培养团队意识。

8.通过观察网络的实例,循序渐进地启发学生完成设计。

课程设计将要求、算法和源程序分开,为学生创造独立思考的条件。

学生在充分理解要求和算法的前提下,设计自己的应用程序。

同时我也获得了许多宝贵的经验:1) 在设计程序之前,务必要对你所设计的题目和内容有一个系统的了解, 知道所设计的题目和内容包含那些资源。

2) 设计程序采用什么编程语言并不是非常重要,关键要有一个清晰的思路和一个完整的软件流程图,因而,要先把设计原理与思路搞清楚,再把流程图画出来,这样设计起来就简单多了。

3) 在设计程序时,不能妄想一次就将整个程序设计好,“反复修改,不断改进”是程序设计的必经之路,发现错误也是取得成绩的一种。

4) 要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便。

2 课设内容2.1设计目的通过课程设计的综合训练,培养我们实际分析问题、编程和动手能力,据课堂讲授内容,学生做相应的自主练习,消化课堂所讲解的内容;通过调试典型例题或习题积累调试C程序的经验;通过完成辅导教材中的编程题,逐渐培养学生的编程能力、用计算机解决实际问题的能力。

最终目标是想通过这种形式,帮助我们系统地掌握程序设计的主要内容,更好地完成学业。

2.2设计功能在这次课射中,我选择的是贪吃蛇游戏的制作,游戏是人们生活中不可或缺的,一个人从小到大,真正伴随他成长的东西,游戏占有着很重要的地位.不论是一个玩具,还是一个能和伙伴一起开心的小游戏,都是能给我们留下很多美好的回忆.所以不论是什么样的游戏,只要它能迎合人们内心的某种需求,它的市场总会是好的,而贪吃蛇是一个深受人们喜爱的游戏,一条蛇在密闭的围墙内,在围墙内随即出现一个食物,通过按键上的四个光标键控制向上下左右四个方向移动,蛇头撞到食物,则表示食物被吃掉,这时蛇身体长一节,同时计10分,接着又出现食物,等待被蛇吃掉,如果蛇在移动过程中,撞到墙壁或身体交叉蛇头撞到自己的身体则游戏结束。

本程序运行实现的主要技巧在二维数组的应用上,程序运行时,游戏界面如下图所示,边框表示围墙,黑色单独方块表示食物:图2.1 游戏界面2.3结构设计程序关键在于表示蛇的图形及蛇的移动。

用一个小矩形快表示蛇的一节身体,身体每长一节,增加一个矩形块,蛇头用俩节表示。

移动时必须从蛇头开始,所以蛇不能向相反的方向移动,如果不按任意键,蛇自行在当前方向上前移,但按下有效方向键后,蛇头朝着该方向移动,一步移动一节身体,所以按下有效方向键后,先确定蛇头的位置,而后蛇的身体随蛇头移动,图形的实现是从蛇头新位置开始画出蛇,这时,由于未清屏的原因,原来的蛇的位置和新蛇的位置差一个单位,所以看起来蛇多一节身体,所以将蛇的最后一节用背景色覆盖。

食物的出现与消失也是画矩形块和覆盖矩形块。

为了便于理解,定义两个结构体:食物与蛇。

2.3.1 数据结构表示食物和蛇的矩形都设计为10 X 10个像素单位,食物的基本数据域为它所出现的位置,用X和y 坐标表示,则矩形块用函数rectangle(x,y,x+10,y+10)或rectangle(x,y,x+10,y-10)可以画出。

由于每次只出现一个食物,而食物被吃掉后,才出现下一个食物,所以设定yes 表示是否要出现一个食物的变量。

蛇的一节身体为一个矩形块,这样表示每个矩形块只需起点坐标x 和y。

身体是不断增长的,所以用数组存放每一节的坐标,最大设定为N=200 ,node表示当前节数。

另外还需要保存蛇移动方向的变量direction 和表示生命的变量 life ,一但life 为1,则蛇死,游戏结束。

所以程序功能的实现就是数组的操作。

#define N 200struct Food{int x; /* 食物的横坐标 */int y; /* 食物的纵坐标 */int yes; /* 判断是否出现食物的变量 */} food; /* 食物的结构体 */struct snake{int x[N]; /* 蛇的横坐标 */int y[N]; /* 蛇的纵坐标 */int node; /* 蛇的节数 */int direction; /* 蛇移动方向 */int life; /* 蛇生命,0活着,1死亡 */}snake;2.3.2 main()主函数主函数是程序的主流程,首先定义使用到的常数、全局变量及函数原型说明,然后初始化图形系统,调用函数DrawK()画出开始画面,调用函数GamePlay(),即玩游戏的具体过程,游戏结束后调用Close()关闭图形系统,结束程序void main(void)/*主函数*/{Init();/*图形驱动*/DrawK();/*开始画面*/GamePlay();/*玩游戏具体过程*/Close();/*图形结束*/}void Init(void)/*图形驱动*/{int gd=DETECT,gm;initgraph(&gd,&gm,"c:\\tc"); /*第一个参数表示图形适配器的类型,第二个为在该类型下图形的显示模式,第三个参数指定驱动程序所在目录。

*/cleardevice();2.3.3 画界面函数 DrawK ()主界面就是一个密封的围墙,用两个循环语句分别在水平方向和垂直方向输出连续的宽度和高度均为10 个单位的矩形小方块,围成密闭图形,表示围墙,为了醒目,设置淡青颜色,用函数setlinestyle ( SOLD_LINE,0,THICK_WIDTH )设置线型宽度为3个像素。

设置3个像素的围墙线,蛇在贴墙走的时候,会擦掉部分围墙线,使线变细,图形变得不好看,如果不想这种情况出现,则将线型宽度设置为1个像素。

void DrawK(void)/*开始画面,左上角坐标为(50,40),右下角坐标为(610,460)的围墙*/{setbkcolor(0);/*设置当前背景颜色*/setcolor(YELLOW);/*设置当前画线颜色*/setlinestyle(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=40;i<=450;i+=10){rectangle(50,i,59,i+10); /*左边*/rectangle(601,i,610,i+10);/*右边*/}}2.3.4 游戏具体过程函数 GamePlay ()这个函数是游戏的主要部分,难点在表示蛇的新位置并消除前一次的图形。

相关主题