资源描述:
《c语言程序贪吃蛇课程设计报告范文.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、高级语言程序设计课程设计报告ExperimentDesigningreporter课程名称:高级语言程序设计英文名称:CProgramExperimentDesigning专业:自动化111学号:XXX姓名:XXX指导教师:XXX日期:2012年6月17日至2011年6月20日山东工商学院信电学院一:课程设计内容程序功能介绍贪吃蛇游戏是一个经典小游戏,深受众多玩家喜爱,其规则是:一条蛇在封闭围墙里,围墙里随机出现一个食物,通过按键盘四个光标键控制蛇向上下左右四个方向移动,蛇头撞倒食物,则食物被吃掉,
2、蛇身体长一节,同时记10分,接着又出现食物,等待蛇来吃,如果蛇在移动中撞到墙或身体交叉蛇头撞倒自己身体游戏结束。此游戏不仅能锻炼人的思维敏捷性,而且还可以提高玩家的逻辑判断能力。设计思路我们小组称设计本次课题——贪吃蛇的思路为“贪快速上手贪吃蛇三步曲”:第一步:寻找到一个真正可以运行的已用C编好的贪吃蛇。因为我们毕竟从未看到过用C编游戏的程序,让我们两手一抹黑的开始编写是有一定的困难的,如果我们自己找一个已经设计好的程序,以此为跳板实现我们想要达到的效果,那么肯定是高效的。所以我们组统一决定,去寻找
3、一个可以运行的C编译的贪吃蛇。第二步:运行游戏并了解游戏程序。我们认为,只有你运行并了解一个游戏,才能知道游戏里需要什么样的改进和创新,如果你自己本身就没玩过这个游戏,那么你就是再有技术,你也永远改进和改编不了一个游戏,因为你根本不知道你在干什么。同样重要的是了解游戏程序。因为只有看懂了程序,才能实现对他的改编,才能游刃有余。第三步:寻找模块并分类,而后进行改编。寻找到你想要改变的游戏内容的控制模块,比如,我想要增加一堵墙,那么就应该找到voidDrawK(void){setcolor(11);se
4、tlinestyle(SOLID_LINE,0,THICK_WIDTH);for(i=200;i<=500;i+=10)rectangle(i,200,i+10,209);}然后要找到:改变蛇初始长度、颜色、初始位置的模块,改变苹果出现位置的模块,让蛇见墙死的模块,让蛇吃苹果加长的模块……….并且进行分类,这样下次再想实现某个目标时,可以一目了然的进行改编。对于找到的模块如何进行改编呢?怎么才能知道某个数值或函数代表什么呢?我们有两个方法:1.)看名字,比如snakecolor(),很明显他的意思是
5、蛇的颜色。2.)控制变量猜想,比如设置墙的时候for(i=200;i<=500;i+=10);rectangle(i,300,i+10,309);中的200,500,300,209代表什么呢?我们可以猜想:它很像是坐标上的(x,y)的格式,是不是呢?可可以先让其他数值不变,只让309改变,改变后发现上面的墙变粗了,由此可见这个数字控制的是一堵墙的最下面一行的坐标。l关于该程序的相关分析思路答题模板:1.贪吃蛇程序流程图如下:撞墙或撞自己开始筑墙设计出现食物蛇移动吃食物GAMEOVER蛇死?是否二.贪
6、吃蛇程序的改编:经过小组成员的认真研究我们对其进行了如下改编l第一步加墙voidDrawK(void){/*setbkcolor(MAGENTA);*/setcolor(5);//可以改变颜色setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*设置线型*/横向上的墙:for(i=100;i<=600;i+=10)//本行代表行坐标上:100代表墙的初始位置,i<=600代表墙的结尾。{rectangle(i,60,i+10,69);//本行代表纵坐标上:60代表墙的最上
7、面一行的位置,69代表墙最下面一行的位置。69-60=9,9代表墙块的厚度}纵向上的墙:for(i=100;i<=400;i+=10)//本行代表纵坐标上:100代表墙的初始位置,i<=400代表墙的结尾{rectangle(100,i,109,i+10);//本行代表纵坐标上:100代表墙的最左边面一行的位置,69代表墙最右面一行的位置。69-60=9,9代表墙块的宽度}我们认为本模块最重要的是for语句控制的坐标代表的意思。只要明白了坐标的意思,就可以实现对游戏的改编。l第二步就是进行对新加入的
8、墙蛇是否撞上死亡l让蛇撞墙死if(snake.x[0]>190&&snake.x[0]<510&&snake.y[0]>=200&&snake.y[0]<=215)/*其中,对x,y范围的控制,实际是对蛇撞击的死亡区域的限制。*/{GameOver();/*本次游戏结束*/snake.life=1;/*蛇死*/}相应的新添加的墙。for(i=200;i<=500;i+=10)/*画围墙*/{rectangle(i,200,i+10,209);/*指定位置*/l第三步食