您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > C语言“贪吃蛇”程序设计报告
山东交通学院C语言课程设计贪吃蛇游戏编程院(系)别信息工程系班级学号姓名指导教师时间2011-03-28—2011-04-01课程设计任务书题目贪吃蛇游戏编程系(部)信息工程系专业班级学生姓名学号03月28日至04月01日共1周指导教师(签字)系主任(签字)年月日一、设计内容及要求贪吃蛇游戏是一个经典小游戏,本设计分为三个等级。一条蛇在封闭围墙里,围墙里随机出现一个食物,通过按键盘四个光标键控制蛇向上下左右四个方向移动,蛇头撞倒食物,则食物被吃掉,蛇身体长一节,同时等级为1计1分,等级为2计2分,等级为3计3分。接着又出现食物,等待蛇来吃,如果蛇在移动中撞到墙或身体交叉蛇头撞倒自己身体游戏结束。二、设计原始资料C语言程序设计和应用三、设计完成后提交的文件和图表见正文内容四、进程安排第一天:选择课题,认真分析。第二~三天:查找资料,利用学过的知识初步编程。第四~五天:写好源代码,进行调试.第六天:整理代码,完善代码.第七天:答辩.五、主要参考资料1.《C语言程序设计》(谭浩强清华大学出版社)2.《C语言程序设计》(张磊高等教育出版社)3.《C语言课程设计案例精编》(郭翠英中国水利水电出版社)4.《C语言程序设计教程》(李丽娟人民邮电出版社)5.《C语言程序设计思想与实践》(林华聪冶金工业出版社)6.《C语言程序设计教程》(张继温高等教育出版社)成绩评定表作品成绩报告成绩口试(答辩)成绩总评成绩5目录一.摘要………………………………………………06.二.题目要求………………………………………………07三.设计思想………………………………………………07四.数据结构设计及用法说明………………………………07五.程序描述………………………………………………08六.程序流程图……………………………………………09七.程序源代码及注释…………………………………11八.运行结果…………………………………………23九.课程设计总结………………………………25十.参考文献…………………………………266一.摘要:食いしん坊な蛇ゲームは1つのすばらしくて小さいゲームで、当設計は3つの等級に分けます。1匹の蛇は閉鎖的な塀の中で、塀の中で無作為の出現の1つの食品、キーボードの4つのカーソルキーによってを通じて(通って)上下左右の4つの方向のモバイルに蛇を制御して、スネークヘッドは食品をぶつかって倒して、食品は食べてしまわれて、蛇の体の長さの1節(つ)、同時に等級は1のために1分計算して、等級は2のために2分計算して、等級は3のために3分計算します。引き続いてまた食品が現れて、蛇が食べにくることを待って、もし蛇はモバイル中で壁あるいは体の交差するスネークヘッドにぶつかって自分の体のゲームオーバーをぶつかって倒すならば。索引のキーワー:ド:食いしん坊な蛇プログラミングします7二.题目要求A用键盘的方向键控制蛇的上下左右移动。B游戏分为三种难度,SLUG为慢速,每吃一朵花得1分;WORM为中速,每吃一朵花得2分;PYTHON为快速,每吃一朵花得3分。C游戏目标:操纵屏幕上那条可爱的小蛇,在黑框中不停吃花,而每吃一朵花,蛇的身体都变的更长一些,游戏的难度也会随之加大。D游戏终止:终止条件1——蛇头撞到墙上;终止条件2——蛇身形成一个圈,也就是蛇头碰到自身的任何一处。三.设计思想1.这个程序的关键是表示蛇的图形以及蛇的移动。用一个小矩形表示蛇的一节身体,身体每长一节,增加一个矩形块,蛇头用两节表示。移动时必须从蛇头开始,所以蛇不能向相反方向移动,也就是蛇尾不能改作蛇头。如果不按任何键,蛇自行在当前方向上前移,当游戏者按了有效的方向键后,蛇头朝着指定的方向移动,一步移动一节身体,所以当按了有效的方向键后,先确定蛇头的位置,然后蛇身体随着蛇头移动,图形的实现是从蛇头的新位置开始画出蛇,这时由于没有庆平的原因,原来蛇的位置和新蛇的位置差一个单位,所以看起来社会多一节身体,所以将蛇的最后一节用背景色覆盖。食物的出现和消失也是画矩形块和覆盖矩形块四.数据结构设计及用法说明1.开始部分:游戏是运行在图形模式下的,所以第一步一定是初始化图形模式,接着要有开始的界面,就像书有封面一样,我设置了一个游戏的标题画面,除了游戏标题画面我还设置了一个欢迎画面。标题画面以后,还要为游戏的运行部分作初始化,包括绘制游戏运行时的背景,对游戏某些重要变量的初始化。82.运行部分:作为游戏的核心部分,这里包括的函数比较多,也就是模块比较多,首先让我模拟一下贪吃蛇的游戏模式:某个世界上突然出现一条蛇,它很短,它的运动神经异常,它没法停止自己的多动症在它的世界里就只有食物,它很饿,也很贪吃;同样在不明原因的情况下,食物从天而降,可惜的是没有落到嘴边;饥饿的主人公,不管它有没有毒,也不问食物的来历,径直向食物爬去;它吃到食物啦,它超出想象的同化能力让食物很快的成为自己身体的一部分,它的身子变长啦。当它吃到第一颗食物时,上帝有给它第二颗,于是它吃了第二颗,于是又变长了,于是又有第三颗……它的身子是一直的加长,它不管自己过长身体的麻烦——转身不便,继续吃下去,现在它是直接把巴张大,好让食物有个绿色通道。但是在某天的下午,它咬到了自己,它才想起自己是一条毒蛇,于是晕死过去(不是毒死);又或者它往食物冲锋的时候,它失去控制,撞到了墙上。第一轮循环:第一步,出现食物;第二步,蛇不停运动;第三步,检查蛇是撞到自己或墙壁;由第四步起游戏有两条支线(A、B):A:第四步,蛇没有碰到自己或墙壁,蛇继续前进,绘制蛇的动作;第五步,判断蛇是否吃到食物,如果蛇吃到食物,身子变长,原来的食物消失;第六步,让玩家输入控制指令,让蛇在下一轮循环的第二步改变运动方向;第七步,第二轮循环的第一步,重复第一轮的步骤;B:第四步,蛇碰到自己或墙壁,终止游戏。3.结束部分:游戏结束时,显示“GAMEOVER”五.程序描述蛇:基本描述:长度,颜色,位置。9对应数据与数据类型:长度—虽然可以用坐标表示,但是这样的话,运算量将很大,所以换算成较大的单位—节数,以固定长度的每节描述;坐标--整型;颜色--整型;位置--X,Y坐标。增加的描述:蛇运动的方向,蛇的生命。对应数据与数据类型:这些描述是为了与程序的按键的输入部分与判断游戏结束部分相联系而设的。方向只有四个方向:上下左右。可以设置与之对应的四个整型数:3、4、2、1。生命就只有两种情况:死或生,对应0或1。食物:基本描述:颜色,位置。对应数据与数据类型:由于颜色设成固定的,所以不再讨论。位置—X、Y坐标。增加的描述:食物的存在。对应数据与数据类型:这是为了避免重复出现食物而设置的,与绘制食物的函数有联系。只有两个值:0或1(没有食物或有食物)其他的元素:墙,由于它在显示上是作为背景而存在的,所以并没有什么说明实际的墙壁就是四条直线组成的边框,由坐标描述。还需要的变量:键盘键入的键值(作为全局变量,整型);经常要使用的循环变量;自定义的填充图案;说明文字的字符数组;游戏的记分;游戏的速度(蛇的速度)。六.程序流程图1011七.程序源代码及注释#includestdio.h#includegraphics.h#includestdlib.h#includedos.h/*引用的库函数*/#defineLEFT0x4b00#defineRIGHT0x4d00#defineDOWN0x5000#defineUP0x4800#defineESC0x011b/*宏定义键名*/#defineN200inti,key;intlevel;/*游戏等级*/intscore=0;/*得分*/intgamespeed;/*游戏速度*/structFood{intx;/*食物的横坐标*/inty;/*食物的纵坐标*/12intyes;/*判断是否要出现食物的变量*/}food;/*食物的结构体*/structSnake{intx[N];inty[N];intnode;/*蛇的节数*/intdirection;/*蛇移动方向*/intlife;/*蛇的生命,0活着,1死亡*/}snake;/*蛇的结构体*/voidChoicelevle(void);/*选择游戏等级*/voidInit(void);/*图形驱动*/voidClose(void);/*图形结束*/voidDRAW(void);/*游戏区域*/voidGameOver(void);/*结束游戏*/voidGamePlay(void);/*玩游戏具体过程*/voidPrScore(void);/*输出成绩*//*主函数*/voidmain(void){13Init();/*图形驱动*/Choicelevle();/*选择游戏等级*/DRAW();/*游戏区域*/GamePlay();/*玩游戏具体过程*/Close();/*图形结束*/}/*图形驱动*/voidInit(void){intgd=DETECT,gm;initgraph(&gd,&gm,\\turboc2);/*初始化图形系统*/cleardevice();/*清除图形界面*/}/*选择游戏等级*/voidChoicelevle(void){setcolor(YELLOW);settextstyle(0,0,6);outtextxy(150,150,Snake);14setcolor(GREEN);settextstyle(0,0,1);outtextxy(200,250,Choicelevlefrom);outtextxy(200,275,1.SLUG2.WORM3.PYTHON);outtextxy(220,300,pleasechoice1or2or3.);getch();printf(pleasechoicelevle:);scanf(%d,&level);gamespeed=100000-5000*level;if(level3||level1){cleardevice();/*清除图形界面*/setcolor(RED);/*设置字体颜色*/settextstyle(0,0,2);/*设置字体类型*/outtextxy(150,200,levelinputerror);/*显示文本*/getch();level=1;}}voidDRAW(void){cleardevice();/*清屏*/15setcolor(2);setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*设置线型*/rectangle(50,40,610,460);}/*玩游戏具体过程*/voidGamePlay(void){setcolor(5);setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*设置线型*/randomize();/*随机数发生器*/food.yes=1;/*1表示需要出现新食物,0表示已经存在食物*/snake.life=0;/*活着*/snake.direction=1;/*方向往右*/snake.x[0]=320;snake.y[0]=240;/*蛇头*/snake.x[1]=330;snake.y[1]=240;/*蛇的第二节位置*/snake.node=3;/*节数*/PrScore();/*输出得分*/while(1)/*可以重复玩游戏,压ESC键结束*/{while(!kbhit())/*在没有按键的情况下,蛇自己移动身体*/{16if(food.yes==1)/*需要出现新食物*/{food.x=rand()%360+70;food.y=rand()%250+60;while(food.x%10!=0)/*食物随机出现后必须让食物能够在整格内,这样才可以让蛇吃到*/food.x++;while(food.y%10!=0)food.y++;food.yes=0;/*画面上有食物了*/}if(food.yes==0)/*画面上有食物了就要显示*/{setcolor(GREEN);rectang
三七文档所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
本文标题:C语言“贪吃蛇”程序设计报告
链接地址:https://www.777doc.com/doc-3984325 .html