贪吃蛇课设

上传人:F****n 文档编号:99772356 上传时间:2019-09-20 格式:DOC 页数:8 大小:37KB
返回 下载 相关 举报
贪吃蛇课设_第1页
第1页 / 共8页
贪吃蛇课设_第2页
第2页 / 共8页
贪吃蛇课设_第3页
第3页 / 共8页
贪吃蛇课设_第4页
第4页 / 共8页
贪吃蛇课设_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《贪吃蛇课设》由会员分享,可在线阅读,更多相关《贪吃蛇课设(8页珍藏版)》请在金锄头文库上搜索。

1、唐 山 学 院 C语言程序设计 课 程 设 计 题 目 贪吃蛇游戏程序设计系 (部) 信息工程系班 级 电信4班姓 名 康林林学 号 指导教师 2014年 2 月 24 日至 3 月 7 日 共 2 周 2014年 3月 7 日一、设计题目、内容及要求题目:贪吃蛇游戏程序设计内容:游戏开始时弹出初始菜单,游戏者按任意键进入游戏。游戏者用键来控制蛇在游戏场景内运动,每吃到一个食物,游戏者得10分,分数累加结果会在计分板上显示;与此同时蛇身长出一节。当贪吃蛇的头部撞击到游戏场景边框或者蛇的身体时游戏结束,并显示游戏者最后得分。 要求:程序结构合理、算法准确、语法正确,并生成可执行文件。二、要求的设

2、计成果(课程设计说明书、设计实物、图纸等)1. 课程设计说明书:课程设计说明书1份,不少于2000字。说明书中要包含需求分析、总体设计、详细设计以及主要的算法描述等内容。 2. 源代码:程序清单三、进程安排2.24-2.5:完成需求分析和程序总体设计。2.26-2.27:完成数据录入、删除、修改、插入和浏览功能模块的设计。2.28-3.3:程序调试无误,生成可执行文件。3.4-.5:撰写课程设计说明书初稿。3.6-3.7:提交课程设计说明书、程序和数据。四、主要参考资料1 谭浩强,张基温C语言程序设计教程(第3版)M北京:高等教育出版社,20062 吕凤煮C语言基础教程基础理论与案例M北京:清

3、华大学出版社,20053 黄明、梁旭、万洪莉C语言课程设计M北京:电子工业出版社,20064 郭宁,郑小玲管理信息系统M北京:人民邮电出版社,20065 赵池龙,杨林,陈伟实用软件工程M北京:电子工业出版社,2006指导教师(签名):教研室主任(签名):C语言程序设计 课程设计任务书课程设计成绩评定表出勤情况出勤天数 缺勤天数成绩评定出勤情况及设计过程表现(20分)课设答辩(20分)设计成果(60分)总成绩(100分)提问(答辩)问题情况综合评定 指导教师签名: 年 月 日 一:需求分析 1. 当我们拿到这个课题的时候,我们对设计贪吃蛇这个游戏,充满浓厚的兴趣,由于这个课题设计只是对我们所设计

4、的游戏进行了简单的要求,这对于我们初学者还说是比较合适的。 2. 使用c语言编译这个程序,预计实现游戏的开始、等级的选择、分数的显示等。3. 由于vc+6.0中不包含我们设计这个游戏所需要的头文件,我们在编译的时候可以更改保存拓展名以实现程序。 二、总体设计说明在数据结构上,用数组存储蛇以及蛇的运动区域。在数组中,每个元素有四个云感动方向,分别为RIGHT,LEFT,UP,DOWN.在没有蛇身的区域,数组的元素值为0。在蛇身的每个节点,用一个数组元素存储当前蛇节点的运动方向。通过改变数组中元素的值来表示蛇身的移动。在程序中运用定时器来保证蛇的持续移动。每个一定的时间间隔,蛇移动一格。在设计界面

5、时。在Visual Studio C+6.0的环境下,建立基于对话框的工程,在工程下设计游戏界面,实现贪食蛇运行算法。在对话框中画出一个矩形,在大矩形中,用20x20的像素单位表示每一个蛇的节点。当数组节点的值不为0的时候,在大矩形中画出相应的蛇的节点矩形。并在蛇每移动一小格的时候,重绘整个窗口。在对蛇身进行绘画时。通过数组元素的值将蛇身在对话框的矩形中显示出来。在蛇身运动时,首先在蛇头位置蛇身增长一个节点,然后判断蛇头是否到达食物所在位置,若在食物所在位置,则蛇尾不减一,蛇身继续移动,若蛇头不在食物位置,则蛇尾减一,蛇身继续移动。若蛇头越界或者蛇头与蛇身重叠,则游戏结束。 三:详细设计以及主

6、要的算法描述 #include#include#include#include#includeusing namespace std;#define COUT coutx=11;body001-y=35;body002-x=11;body002-y=33;body003-x=11;body003-y=31;body004-x=11;body004-y=29;body001-next=body002;/依次指向下一个链表body002-next=body003;body003-next=body004;body004-next=NULL;/蛇尾指向NULLvoid Prt_Map()/打印地体,

7、就是四周的方格子int i;for(i=1;i=80;i+=2)Position(1,i);COUT;Position(24,i);COUT;/x:223 共22个for(i=1;ix,p-y);COUT;/光标调整到蛇身位置p=p-next;/p指向下一个结点Position(Food_x,Food_y);COUT;Position(7,63);coutScore: Score;Position(10,63);coutGrade: next;if(body001-y=1|body001-y=57|body001-x=1|body001-x=24)return 1;while(!(p-x=bo

8、dy001-x&p-y=body001-y)if(p-next=NULL)return 0;p=p-next;return 1;void Creat_Food()/创造食物if(Food=0)/如果没有食物才创造食物srand(int)time(0);/引用本地时间作为种子产生随机数,如果直接用随机数函数,那样会很蛋疼Food_x=rand()%21+2;/关于为什么模21与52,你分析一下我上面产生地图的函数就知道了int temp=rand()%52+3;if(temp%2=0)Food_y=temp+1;/方格子要占用两个光标,所以只能在奇数Y光标位置上产生else Food_y=tem

9、p;Food=1;void Move()/蛇身移动函数Body *p=new Bodysizeof(Body),*q,*temp=new Bodysizeof(Body);if(Direction=1)/判断方向if(body001-x=(Food_x+1)&body001-y=Food_y)/蛇头吃到食物,其实也就是他们的坐标相等temp-x=Food_x;temp-y=Food_y;temp-next=body001;body001=temp;Food=0;Score+=5;/把食物连接在舌头上elsetemp-x=body001-x-1;temp-y=body001-y;temp-nex

10、t=body001;body001=temp;q=body001;/没有吃到食物的话,就把舌头按照它运动的方向移动一个单位while(q-next)-next!=NULL)q=q-next;/然后一次移动蛇身Position(q-next)-x,(q-next)-y);coutnext); q-next=NULL;/删除节点if(Direction=2)if(body001-x=Food_x&body001-y=(Food_y+2)temp-x=Food_x;temp-y=Food_y;temp-next=body001;body001=temp;Food=0;Score+=5;elsetemp-x=body001-x;temp-y=body001-y-2;temp-next=body001;body001=temp;q=body001;while(q-next)-next!=NULL)q=q-next;Position(q-next)-x,(q-next)-y);coutnext); q-next=NULL;if(Direction=3)if(body001-x=(Food_x-1)&

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号