金语佳诚
程序功能介绍贪吃蛇游戏是一个经典小游戏,一条蛇在封闭围墙里,围墙里随机出现一个食物,通过按键盘四个光标键控制蛇向上下左右四个方向移动,蛇头撞倒食物,则食物被吃掉,蛇身体长一节,同时记10分,接着又出现食物,等待蛇来吃,如果蛇在移动中撞到墙或身体交叉蛇头撞倒自己身体游戏结束。程序整体设计说明一个游戏要有开始部分,运行部分,结束部分(实际上开始部分与运行部分是一体的)。设计思路这个程序的关键是表示蛇的图形以及蛇的移动。用一个小矩形表示蛇的一节身体,身体每长一节,增加一个矩形块,蛇头用两节表示。移动时必须从蛇头开始,所以蛇不能向相反方向移动,也就是蛇尾不能改作蛇头。如果不按任何键,蛇自行在当前方向上前移,当游戏者按了有效的方向键后,蛇头朝着指定的方向移动,一步移动一节身体,所以当按了有效的方向键后,先确定蛇头的位置,然后蛇身体随着蛇头移动,图形的实现是从蛇头的新位置开始画出蛇,这时由于没有庆平的原因,原来蛇的位置和新蛇的位置差一个单位,所以看起来社会多一节身体,所以将蛇的最后一节用背景色覆盖。食物的出现和消失也是画矩形块和覆盖矩形块数据结构设计及用法说明 开始部分:游戏是运行在图形模式下的,所以第一步一定是初始化图形模式,接着要有开始的界面,就像书有封面一样,我设置了一个游戏的标题画面,除了游戏标题画面我还设置了一个欢迎画面。标题画面以后,还要为游戏的运行部分作初始化,包括绘制游戏运行时的背景,对游戏某些重 要变量的初始化。运行部分:作为游戏的核心部分,这里包括的函数比较多,也就是模块比较多,首先让我模拟一下贪吃蛇的游戏模式:某个世界上突然出现一条蛇,它很短,它的运动神经异常,它没法停止自己的多动症在它的世界里就只有食物,它很饿,也很贪吃;同样在不明原因的情况下,食物从天而降,可惜的是没有落到嘴边;饥饿的主人公,不管它有没有毒,也不问食物的来历,径直向食物爬去;它吃到食物啦,它超出想象的同化能力让食物很快的成为自己身体的一部分,它的身子变长啦。当它吃到第一颗食物时,上帝有给它第二颗,于是它吃了第二颗,于是又变长了,于是又有第三颗……它的身子是一直的加长,它不管自己过长身体的麻烦——转身不便,继续吃下去,现在它是直接把巴张大,好让食物有个绿色通道。但是在某天的下午,它咬到了自己,它才想起自己是一条毒蛇,于是晕死过去(不是毒死);又或者它往食物冲锋的时候,它失去控制,撞到了墙上。第一轮循环:第一步,出现食物;第二步,蛇不停运动;第三步,检查蛇是撞到自己或墙壁;由第四步起游戏有两条支线(A、B):A :第四步,蛇没有碰到自己或墙壁,蛇继续前进,绘制蛇的动作;第五步,判断蛇是否吃到食物,如果蛇吃到食物,身子变长,原来的食物消失;第六步,让玩家输入控制指令,让蛇在下一轮循环的第二步改变运动方向;第七步,第二轮循环的第一步,重复第一轮的步骤;B:第四步,蛇碰到自己或墙壁,终止游戏。结束部分:游戏结束时,显示“GAME OVER”,已经是约定俗成的规律了,我的游戏也不例外。除了游戏结束画面外,我还设置了一个游戏退出画面,“善始善终”嘛。有了上述的大致划分,我把整个程序划分成(13+2)个模块(其实就是函数)程序结构(流程图) 图流程图依据所需要处理的任务要求,规划输入数据和输出结果,决定存放数据的数据结构。C语言中数据结构集中体现在数据类型上,因此在进行C语言程序设计时,应统筹规划程序中所使用的变量,数组,指针等,以及它们的类型等。这点是很重要的,如果在此期间选择不合适的变量或者数组,将来修改就十分困难。现在分析一下贪吃蛇游戏中的元素,继而得出与它们对应的在程序中的描述:蛇:基本描述:长度,颜色,位置。对应数据与数据类型:长度—虽然可以用坐标表示,但是这样的话,运算量将很大,所以换算成较大的单位—节数,以固定长度的每节描述;坐标--整型;颜色--整型; 位置--X,Y坐标。增加的描述:蛇运动的方向,蛇的生命。对应数据与数据类型:这些描述是为了与程序的按键的输入部分与判断游戏结束部分相联系而设的。方向只有四个方向:上下左右。可以设置与之对应的四个整型数:3、4、2、1。生命就只有两种情况:死或生,对应0或1。食物: 基本描述:颜色,位置。对应数据与数据类型:由于颜色设成固定的,所以不再讨论。位置—X、Y坐标。增加的描述:食物的存在。对应数据与数据类型:这是为了避免重复出现食物而设置的,与绘制食物的函数有联系。只有两个值:0或1(没有食物或有食物)其他的元素:墙,由于它在显示上是作为背景而存在的,所以并没有什么说明实际的墙壁就是四条直线组成的边框,由坐标描述。还需要的变量:键盘键入的键值(作为全局变量,整型);经常要使用的循环变量;自定义的填充图案;说明文字的字符数组;游戏的记分;游戏的速度(蛇的速度)。图蛇的不停运动的关键算法的流程图各模块的功能及程序说明主要模块的实现思路和算法的流程图说明:关键所在——蛇不停移动的Snakemove():蛇的不停移动,就是蛇的下一节取代前一节的位置,在计算机中就是蛇下一节的位置坐标变成前一节的位置坐标。在上文中,已定义蛇的位置坐标为数组类型,一组坐标对应一节的位置,假设有i+1节,由0到i节,第i节的坐标取第i-1节的坐标,第i-1节的坐标取第i-2节的坐标……直到第1节取第0节的坐标。而第0节的坐标,即蛇头的坐标要往某个方向变化,变化量为蛇每节的长度。蛇的这种坐标轮换需要循环语句使其继续下去。 程序结果运行程序得到如下初始界面图: 图程序结果图用一个小矩形表示蛇的一节身体,身体每长一节,增加一个矩形块,蛇头用两节表示: 图程序结果图蛇没有碰到自己或墙壁,蛇继续前进: 图程序结果图游戏结束时,显示“GAME OVER” 图程序结果图程序源代码及注释#define N 200#include <>#include <>#include <>#define LEFT 0x4b00#define RIGHT 0x4d00#define DOWN 0x5000#define UP 0x4800#define ESC 0x011bint i,key;int score=0;/*得分*/int gamespeed=50000;/*游戏速度自己调整*/struct 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;void Init(void);/*图形驱动*/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; registerbgidriver(EGAVGA_driver); initgraph(&gd,&gm,"c:\\program files\\winyes\\tc20h\\bgi"); cleardevice();}/*开始画面,左上角坐标为(50,40),右下角坐标为(610,460)的围墙*/void DrawK(void){/*setbkcolor(LIGHTGREEN);*/ setcolor(11); 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);/*右边*/ }}/*玩游戏具体过程*/void GamePlay(void){ randomize();/*随机数发生器*/ ;/*1表示需要出现新食物,0表示已经存在食物*/ ;/*活着*/ ;/*方向往右*/ [0]=100;[0]=100;/*蛇头*/ [1]=110;[1]=100; ;/*节数*/ PrScore();/*输出得分*/ while(1)/*可以重复玩游戏,压ESC键结束*/ { while(!kbhit())/*在没有按键的情况下,蛇自己移动身体*/ { if()/*需要出现新食物*/ { ()%400+60; ()%350+60; while(!=0)/*食物随机出现后必须让食物能够在整格内,这样才可以让蛇吃到*/ ; while(!=0) ; ;/*画面上有食物了*/ } if()/*画面上有食物了就要显示*/ { setcolor(GREEN); rectangle(); } for(i=;i>0;i--)/*蛇的每个环节往前移动,也就是贪吃蛇的关键算法*/ { [i]=[i-1]; [i]=[i-1]; } /*1,2,3,4表示右,左,上,下四个方向,通过这个判断来移动蛇头*/ switch() { case 1:[0]+=10;break; case 2: [0]-=10;break; case 3: [0]-=10;break; case 4: [0]+=10;break; } for(i=3;i<;i++)/*从蛇的第四节开始判断是否撞到自己了,因为蛇头为两节,第三节不可能拐过来*/ { if([i]==[0]&&[i]==[0]) { GameOver();/*显示失败*/ ; break; } } if([0]<55||[0]>595||[0]<55|| [0]>455)/*蛇是否撞到墙壁*/ { GameOver();/*本次游戏结束*/ ; /*蛇死*/ } if()/*以上两种判断以后,如果蛇死就跳出内循环,重新开始*/ break; if([0]==[0]==)/*吃到食物以后*/ { setcolor(0);/*把画面上的食物东西去掉*/ rectangle(); []=-20;[]=-20; /*新的一节先放在看不见的位置,下次循环就取前一节的位置*/ ;/*蛇的身体长一节*/ ;/*画面上需要出现新的食物*/ score+=10; PrScore();/*输出新得分*/ } setcolor(4);/*画出蛇*/ for(i=0;i<;i++) rectangle([i],[i],[i]+10, [i]-10); delay(gamespeed); setcolor(0);/*用黑色去除蛇的的最后一节*/ rectangle([],[], []+10,[]-10); } /*endwhile(!kbhit)*/ if()/*如果蛇死就跳出循环*/ break; key=bioskey(0);/*接收按键*/ if(key==ESC)/*按ESC键退出*/ break; else if(key==UP&&!=4)/*判断是否往相反的方向移动*/ ; else if(key==RIGHT&&!=2) ; else if(key==LEFT&&!=1) ; else if(key==DOWN&&!=3) ; }/*endwhile(1)*/}/*游戏结束*/void GameOver(void){ cleardevice(); PrScore(); setcolor(RED); settextstyle(0,0,4); outtextxy(200,200,"GAME OVER"); getch();}/*输出成绩*/void PrScore(void){ char str[10]; setfillstyle(SOLID_FILL,YELLOW); bar(50,15,220,35); setcolor(6); settextstyle(0,0,2); sprintf(str,"score:%d",score); outtextxy(55,20,str);}/*图形结束*/void Close(void){ getch(); closegraph();}第3章 课程设计总结课程设计是培养学生综合运用所学知识 ,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对我们的实际工作能力的具体训练和考察过程.随着科学技术发展的日新月异,当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握程序开发技术是十分重要的,而C语言又是最常见,功能最强大的一种高级语言,因此做好C语言课程设计是十分必要的。 回顾起此次课程设计,至今我们仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,在整整半个月的日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对一些前面学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体,指针,链表……通过这次课程设计之 后,我们把前面所学过的知识又重新温故了一遍。我做的是做贪吃蛇游戏。简单的一个,但对我一个初学者来说却是一个很大的困难。更加是第一次做课程设计,所以第一天下午在机房做了一个下午却丝毫没有进展,最主要是不知从何开始,这个时候才知道上课老师们不厌其烦的教导是多么的宝贵,这个时候才后悔上课的时候没有认真的听讲。可是现在一切都晚了,还好时间还算是充裕,只好拿出书本重新复习一下。特别是结构体,指针的部分,几乎是一片空白。不过经过几天的努力,大体上把课本上的知识点看了一遍,知识点也都基本是撑握了,所以一下一步就是开始正式的编程序了。不过毕竟是个新手,还是不知如何下手,于是就在网上下了一篇类似的程序,经过仔细的研究,终于读懂了C语言编程的基本过程和方法。 经过一波三折,终于开始正式编程。编程是一件很枯燥很无聊的事情,但是出于完成作业,得到学分的压力,还必须强破自己坚持下去,按照老师所说的模块化思想,分部分的进行编写。而且编程是一件高精度、模范化的事情,稍有疏乎都会影响全局,也可能因为某一处的小的错误而导致整个程序的无法运行。所以认真仔细就是非常重要的了。开始的时候真的感觉编程是一件很无聊的事情,不过当一个程序运行成功的时候那种喜悦是无法言语的,那种成就感是无法比拟的。又经过几天的努力,终于把程序完成了,尽管程序还是有很多错误和漏洞,不过还是很高兴的。无论如何是自己的劳动成果,是自己经过努力得到的成绩,同时也是学习C语言的一次实践作业,自己进步的证明。 通过这次课程设计,使我对C语言有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,我也发现我的好多不足之处,首先是自己在指法上还不行,经常按错字母,通过学习也有所改进;再有对C语言的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,还有对C语言中经常出现的错误也不了解,通过实践的学习,我认识到学好计算机要重视实践操作,不仅仅是学习C语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过 程中,我会更加注视实践操作,使自己便好地学好计算机。在课程设计过程中,收获知识,提高能力的同时,我也学到了很多人生的哲理,懂得怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪。
guokeren555
那件事发生在我读二年级的时候.那天放学,我排着路队正准备回家.突然跟我走在同一排的几个同学悄悄在靠近我跟我说:"今天你跟我来,我带你去一个好地方"!我心想,反正今天作业不多,回到家一定能完成,不如就跟他们去吧!于是我们一起出了校门,就向东拐,一直走到了一个小公园前.我一看,啊,到处是绿树成荫,花香扑鼻,一条小河前有一个亭子,我跟同学便向那走去,等我们坐下后,一个同学从书包去拿出来一套厚厚的游戏卡,对我们说:"大家一起来玩吧!"说着将卡一张张地发给了我们,还说了怎样玩,有怎样的规则,不照规则玩要扣分,等等..我们便开心地玩了起来.不知不觉,天己渐渐地黑了,路旁的灯光渐渐在亮了起来,我怕妈妈着急,不得不向同学说再见,背上书包回家去了.当我吃完晚饭,妈妈说:"今晚去外婆家,你作业做完了吗?"因为要去外婆家,所以我就撒了一个谎说:"做好了"当时我心想作业那么少,回来也可以做.可从外婆家回来,已经是晚上10点多了,心想这么点作业,不如明天早上早点起床做吧.于是我就放心地睡下了." 起床了,起床了,再不起床来不及了"妈妈把我从睡梦中叫醒,我一看7点多了,妈妈给我烧的早饭,我急匆匆地吃了一两口便背着书包上学去了,到了学校我才想起来还没做作业,这可怎么办呀??我急得团团转,老师知道后当着全班同学的面狠狠地批评了我一顿.我当时十分后悔.通过了这件事,我悟出了一个道理,不管作业多还是少都不能拖,今天的事今天做,决不能留到明天,做别的事也一样,不能只为一时的放松,而误了做大事.
*指尖的淚
《高级语言程序设计》课程设计 实验报告 题目:贪吃蛇 专业:计算机 班级: 软件姓名: 成绩: 指导教师: 完成日期:2008年09月23日 一、目的 1. 进一步掌握和利用C语言进行程设计的能力; 2、 进一步理解和运用结构化程设计的思想和方法; 3、 初步掌握开发一个小型实用系统的基本方法; 4、 学会调试一个较长程序的基本方法; 5、 学会利用流程图或N-S图表示算法; 6、 掌握书写程设计开发文档的能力(书写课程设计报告); 二、内容与设计思想。 (1).系统功能与分析(填写你所设计的菜单及流程图)。 功能:进行贪食蛇游戏 分析:定义键盘方向键操作,随机数发生器产生食物,并分别利用函数判断贪食蛇的长度及游戏是否成功等. 并能够输入游戏成绩.(2).数据结构 struct 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;(3).模块设计 根据功能需要: 源文件 :#include <> #include <> #include <> #include <> 函数名 功能 void main() 游戏主程序void Init(void); 图形驱动void Close(void); 图形结束void DrawK(void); 开始画面void GameOver(void); 结束游戏void GamePlay(void); 玩游戏具体过程void PrScore(void); 输出成绩(3)总体设计思想: 利用图形驱动,制作美观的游戏界面.通过随机函数产生随机数,控制游戏过程食物的出现.定义键盘操作,控制游戏过程蛇的移动方向.画出边界,并判断游戏是否结束.统计游戏过程蛇吃的食物数量,计算并输出游戏成绩.(4)调试过程: 测试数据及结果,出现了哪些问题,如何修改的 这里,你就写一下你平时出错的地方,与如何修改的.这里我也不好帮你写.(5)程序有待改进的地方及本次实习的收获和建议 收获:加深认识了程序编译过程的中团队合作的重要性. 提高了自己的编程能力(7)源程序清单(主要代码) 清单只要将上面的程序全部粘帖就可以了.
小七-279928530
有一种游戏叫“贪食蛇”,又名贪吃蛇。一条小蛇,不停地在屏幕上游走,吃各个方向出现的蛋,每吃一颗,就长长一点,吃得越多,长得越长,当手机上的小蛇越来越长,积分便越来越高,游戏边越来越紧张刺激,死亡便悄然降临。因为,贪食蛇身子越长活动空间越窄,这时才后悔太贪吃了。屏幕的空间是有限的,只要蛇头碰到屏幕四周,或者碰到自己的身子,小蛇立即毙命。贪食蛇是一个彻头彻尾的悲剧性游戏,不管玩家自认玩得多么纯熟,手艺多么高超,最终会发现自己将走投无路。那时候,也许玩家不再贪吃,也许玩家明白受到了死亡的威胁,但玩家突然发现自己开始手忙脚乱,疲于奔命了,一切的努力都无济于事,结局必定是听到小蛇的一声惨叫。其实,悲剧结局在游戏开始就注定了,因为这是个特殊的游戏,这个游戏有个要命的字,那就是“贪”!“贪食蛇”游戏,起初看起来机会甚多,猎物遍地,实际上却步步陷阱,暗藏杀机。游戏开始时,蛇身很短,由于难度小,很容易让人掉以轻心,你会不知不觉加快速度,正是在这个不知不觉的过程中,蛇身在慢慢加长。但玩家往往忽略了这种潜在的危险,麻痹大意,在最得意洋洋的一刻,死亡突然降临。贪食蛇贪吃,最终吃死了自己,微妙之处在神不知鬼不觉间,一步步把自己推向毁灭的深渊。贪食是一种欲望,更是一种诅咒,只要沾上,便会被利益蒙蔽双眼,便会生出诸多的侥幸,便会欲罢不能,便会淬不及防地一头栽进自己掘下的陷进,用悲壮的一生,给人类一个警示。由贪食蛇,联想到贪官,都栽在一个“贪”字上,性质上有许多相似。贪官上任伊始或许是清正廉洁的,也被党性武装着头脑,金刚不坏,五毒不侵。但每个人都有情感的缺口——亲人,朋友!于是,便有人上门来打亲情牌,打朋友的幌子,请吃饭,送水果等。这些活动在友谊范围之类,既不违纪,也不犯法。于是,一条烟,一瓶酒,一桌宴席……但事情往往不会仅此而已,有了这一次,还有下一次,虽不合理,但却合情,一次比一次铺张,一次比一次升级,似乎跟前一次也没有多大差别,自认不是什么大事。不知不觉间,“友谊”在加深,“吃”进的东西越来越多,胆子越来越大,戒心也慢慢消除,贪欲慢慢形成,后患越来越大。自己还觉得在亲情、友情的圈子里转呢,内心谬之毫厘,法度上失之千里。在不经意间一步步滑向深渊,万劫不复。小到个人,大到官场,都可以以贪食蛇为参照。开始时,只是品办公茶,抽办公烟,喝办公酒,吃公家宴席……今天一点,明天一点,吃单位,吃国家,最后吃喝拉撒全让国家报销,用公家钱满足自己在物质和精神上的欲求,这似乎也不是什么大不了的事。事情还不会就此止步,要求慢慢变高,警惕慢慢放松,范围慢慢扩大,连家人和亲友也开始享受单位的“福利”,利用职权之便,用公家钱套私人感情,损公肥私,甚至中饱私囊,把国家的钱变成自己的钱,把赃款漂白成合法收入……一点点偏离党性,一点点背离人民,最终成为国家和人民的蛀虫,站在人民的对立面上,成为人民的罪人。这跟贪食蛇游戏完全一样,最终自己吃死自己!规避这种不幸的惟一的办法,就是远离这种危险的悲剧性游戏,彻底戒除“贪”念,不与“贪”字沾边,远离了诱惑,远离了陷阱,才能稳健地站立在大地上,昂首挺胸,留一身正气,舞两袖清风,傲立于天地之间,撑起头顶一片朗朗晴空!
程序有了那就该按你的程序写报告啊 就这么给个要求 谁知道怎么写啊
写单片机贪吃蛇游戏毕业设计开题报告文献综述方法如下。1、文献综述,研究思路研究方法及手段。2、参考文献进度安排。3、文献综述是开题报告中的最重要部分。
这样的活动能够让孩子锻炼身体,而且也能够加强孩子的团结意识,带来更多的乐趣,在活动当中真的会让孩子们变得更加优秀。
游戏可以给你找个,但是100分就让我们帮你写论文就有点...是你的论文,不是我们的。还2天,抓紧时间写吧。只能给你推荐一些资料了。
具体有以下几种类型:M——专著C——论文集N——报纸文章J——期刊文章D——学位论文R——报告,采用字母“Z”标识。对于英文参考文献,还应注意以下两点:1、作者