贪吃蛇课设

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

唐山学院

一、设计题目、内容及要求

题目:贪吃蛇游戏程序设计

内容:游戏开始时弹出初始菜单,游戏者按任意键进入游戏。游戏者用←↓→↑键来控制蛇在游戏场景内运动,每吃到一个食物,游戏者得10分,分数累加结果会在计分板上显示;与此同时蛇身长出一节。当贪吃蛇的头部撞击到游戏场景边框或者蛇的身体时游戏结束,并显示游戏者最后得分。

要求:程序结构合理、算法准确、语法正确,并生成可执行文件。

C语言程序设计课程设计

题目贪吃蛇游戏程序设计

系(部) 信息工程系

班级电信4班

姓名康林林

学号4130220436

指导教师

2014年2 月24 日至 3 月7 日共 2 周

2014年3月7 日

二、要求的设计成果(课程设计说明书、设计实物、图纸等)

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].北京:高等教育出版社,

2006

[2] 吕凤煮.C语言基础教程——基础理论与案例[M].北京:清华大学出版社,

2005

[3] 黄明、梁旭、万洪莉.C语言课程设计[M].北京:电子工业出版社,2006

[4] 郭宁,郑小玲.管理信息系统[M].北京:人民邮电出版社,2006

[5] 赵池龙,杨林,陈伟.实用软件工程[M].北京:电子工业出版社,2006指导教师(签名):教研室主任(签名):

C语言程序设计课程设计任务书

课程设计成绩评定表

出勤情况出勤天数缺勤天数

成绩评定出勤情况及设计过程表现(20分)课设答辩(20分)

设计成果(60分)

总成绩(100分)

提问(答辩)问题情况

合评定指导教师签名:

年月日

一:需求分析

1.当我们拿到这个课题的时候,我们对设计贪吃蛇这个游戏,充

满浓厚的兴趣,由于这个课题设计只是对我们所设计的游戏进行了简单的要求,这对于我们初学者还说是比较合适的。

2.使用c语言编译这个程序,预计实现游戏的开始、等级的选择、

分数的显示等。

3.由于vc++6.0中不包含我们设计这个游戏所需要的头文件,我们

在编译的时候可以更改保存拓展名以实现程序。

二、总体设计说明

在数据结构上,用数组存储蛇以及蛇的运动区域。在数组中,每个元素有四个云感动方向,分别为RIGHT,LEFT,UP,DOWN.在没有蛇身的区域,数组的元素值为0。在蛇身的每个节点,用一个数组元素存储当前蛇节点的运动方向。通过改变数组中元素的值来表示蛇身的移动。在程序中运用定时器来保证蛇的持续移动。每个一定的时间间隔,蛇移动一格。

在设计界面时。在Visual Studio C++6.0的环境下,建立基于对话框的工程,在工程下设计游戏界面,实现贪食蛇运行算法。在对话框中画出一个矩形,在大矩形中,用20x20的像素单位表示每一个蛇的节点。当数组节点的值不为0的时候,在大矩形中画出相应的蛇的节点矩形。并在蛇每移动一小格的时候,重绘整个窗口。在对蛇身进行绘画时。通过数组元素的值将蛇身在对话框的矩形中显示出来。

在蛇身运动时,首先在蛇头位置蛇身增长一个节点,然后判断蛇头是否到达食物所在位置,若在食物所在位置,则蛇尾不减一,蛇身继续移动,若蛇头不在食物位置,则蛇尾减一,蛇身继续移动。若蛇头越界或者蛇头与蛇身重叠,则游戏结束。

三:详细设计以及主要的算法描述

#include

#include

#include

#include

#include

using namespace std;

#define COUT cout<<"■"//定义一个宏,用于输出方块,注意方格占两个光标struct Body//定义蛇的链表结构体,x,y分别记录纵横坐标,原点在屏幕左上角

{int x,y;

Body *next;//定义指向下一个结点

};

int Food=0,Food_x,Food_y,Direction=4,Grade,Score=0;//分别定义游戏的:食物【有是1,无是0】

//食物的x,y坐标。蛇头方向【上1,左2,下3,右4】。级数【用于调节蛇的速度】,得分

Body *body001=new Body[sizeof(Body)];//定义蛇头结点,定义为全局变量的好处是所有函数都可以引用,而且地址不会因函数结束而丢失

void Position(int x,int y)//这个是使光标指向x,y左边处

{COORD pos={y-1,x-1};

HANDLE Out=GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleCursorPosition(Out,pos);

}

void CreatSneak()//创造3个蛇身结点

{Body *body002=new Body[sizeof(Body)];//创建在函数体内且在头结点里标记下一个蛇身,不会因函数体执行完毕而是分配的内存地址丢掉

Body *body003=new Body[sizeof(Body)];

Body *body004=new Body[sizeof(Body)];

body001->x=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;//蛇尾指向NULL

}

void Prt_Map()//打印地体,就是四周的方格子

{int i;

for(i=1;i<=80;i+=2)

{Position(1,i);COUT;

Position(24,i);COUT;}//x:2~23 共22个

for(i=1;i<=24;i++)

{Position(i,1);COUT;

Position(i,57);COUT;//y:3~55共27个

Position(i,79);COUT;}

}

void Prt_Sneak()//输出蛇身

{Body *p;p=body001;//创建一个临时指针,并指向头结点

while(p!=NULL)//判断是否指向蛇尾

{Position(p->x,p->y);COUT;//光标调整到蛇身位置

p=p->next;//p指向下一个结点

}

Position(Food_x,Food_y);COUT;

Position(7,63);cout<<"Score: "<

Position(10,63);cout<<"Grade: "<

相关文档
最新文档