C语言“贪吃蛇”程序
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
报告
软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载
山东交通学院
C语言课程设计
贪吃蛇游戏编程
院(系)别 信息工程系 班 级 学 号 姓 名 指导教师 时 间 2011-03-28—2011-04-01
课 程 设 计 任 务 书
题 目 贪吃蛇游戏编程 系 (部) 信息工程系 专 业 班 级 学生姓名 学 号
03 月 28 日至 04 月 01 日 共 1 周
指导教师(签字)
系 主 任(签字)
年 月 日
一、设计内容及要求
贪吃蛇游戏是一个经典小游戏,本设计分为三个等级。一条蛇在封闭围墙里,围墙里随机出现一个食物,通过按键盘四个光标键控制蛇向上下左右四个方向移动,蛇头撞倒食物,则食物被吃掉,蛇身体长一节,同时等级为1计1分,等级为2计2分,等级为3计3分。接着又出现食物,等待蛇来吃,如果蛇在移动中撞到墙或身体交叉蛇头撞倒自己身体游戏结束。
二、设计原始资料
C语言程序设计和应用
三、设计完成后提交的文件和图
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
见正文内容
四、进程安排
第一天:选择课题,认真
分析
定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析
。
第二,三天:查找资料,利用学过的知识初步编程。
第四,五天:写好源代码,进行调试.
第六天:整理代码,完善代码.
第七天:答辩.
五、主要参考资料
1. 《C语言程序设计》(谭浩强 清华大学出版社)
2. 《C语言程序设计》(张磊 高等教育出版社)
3. 《C语言课程设计案例精编》(郭翠英 中国水利水电出版社) 4. 《C语言程序设计教程》(李丽娟 人民邮电出版社) 5. 《C语言程序设计思想与实践》(林华聪 冶金工业出版社) 6. 《C语言程序设计教程》(张继温 高等教育出版社)
成 绩 评 定 表
作品成绩 报告成绩 口试(答辩)成总评成绩
绩
目录
一(摘要 „„„„„„„„„„„„„„„„„„06 .
二.题目要求 ………………………………………………07
三.设计思想 ………………………………………………07
四.数据结构设计及用法说明………………………………07
五.程序描述 ………………………………………………08
六.程序
流程
快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计
图 „„„„„„„„„„„„„„„„„09
七.程序源代码及注释 …………………………………11
八(运行结果 „„„„„„„„„„„„„„„„ 23
九.课程设计总结 ……………………………„25
十.参考文献 „„„„„„„„„„„„„ 26
5
一(摘要:
食いしん坊な蛇ゲームは,つのすばらしくて小さいゲームで、当設計は3つの等級に分けます。1匹の蛇は閉鎖的な塀の中で、塀の中で無作為の出現の,つの食品、キーボードの4つのカーソルキーによってを通じて(通って)上下左右の4つの方向のモバイルに蛇を制御して、スネークヘッドは食品をぶつかって倒して、食品は食べてしまわれて、蛇の体の長さの1節(つ)、同時に等級は1のために1分計算して、等級は2のために2分計算して、等級は3のために3分計算します。引き続いてまた食品が現れて、蛇が食べにくることを待って、もし蛇はモバイル中で壁あるいは体の交差するスネークヘッドにぶつかって自分の体のゲームオーバーをぶつかって倒すならば。
索引のキーワー:
ド:食いしん坊な蛇 プログラミングします
6
二(题目要求
A 用键盘的方向键控制蛇的上下左右移动。
B 游戏分为三种难度,SLUG为慢速,每吃一朵花得1分;WORM 为中速,每吃一朵花得2分;PYTHON为快速,每吃一朵花得3分。 C 游戏目标:操纵屏幕上那条可爱的小蛇,在黑框中不停吃花,而每吃一朵花,蛇的身体都变的更长一些,游戏的难度也会随之加大。
D 游戏终止:终止条件1——蛇头撞到墙上;终止条件2——蛇身形成一个圈,也就是蛇头碰到自身的任何一处。
三(设计思想
1.这个程序的关键是表示蛇的图形以及蛇的移动。用一个小矩形表示蛇的一节身体,身体每长一节,增加一个矩形块,蛇头用两节表示。移动时必须从蛇头开始,所以蛇不能向相反方向移动,也就是蛇尾不能改作蛇头。如果不按任何键,蛇自行在当前方向上前移,当游戏者按了有效的方向键后,蛇头朝着指定的方向移动,一步移动一节身体,所以当按了有效的方向键后,先确定蛇头的位置,然后蛇身体随着蛇头移动,图形的实现是从蛇头的新位置开始画出蛇,这时由于没有庆平的原因,原来蛇的位置和新蛇的位置差一个单位,所以看起来社会多一节身体,所以将蛇的最后一节用背景色覆盖。食物的出现和消失也是画矩形块和覆盖矩形块
四(数据结构设计及用法说明
1.开始部分:
游戏是运行在图形模式下的,所以第一步一定是初始化图形模式,接着要有开始的界面,就像书有封面一样,我设置了一个游戏的标题画面,除了游戏标题画面我还设置了一个欢迎画面。标题画面以后,还要为游戏的运行部分作初始化,包括绘制游戏运行时的背景,对游戏某些重 要变量的初始化。
7
2.运行部分:
作为游戏的核心部分,这里包括的函数比较多,也就是模块比较多,首先让我模拟一下贪吃蛇的游戏模式:某个世界上突然出现一条蛇,它很短,它的运动神经异常,它没法停止自己的多动症在它的世界里就只有食物,它很饿,也很贪吃;同样在不明原因的情况下,食物从天而降,可惜的是没有落到嘴边;饥饿的主人公,不管它有没有毒,也不问食物的来历,径直向食物爬去;它吃到食物啦,它超出想象的同化能力让食物很快的成为自己身体的一部分,它的身子变长啦。当它吃到第一颗食物时,上帝有给它第二颗,于是它吃了第二颗,于是又变长了,于是又有第三颗„„它的身子是一直的加长,它不管自己过长身体的麻烦——转身不便,继续吃下去,现在它是直接把巴张大,好让食物有个绿色通道。但是在某天的下午,它咬到了自己,它才想起自己是一条毒蛇,于是晕死过去(不是毒死);又或者它往食物冲锋的时候,它失去控制,撞到了墙上。
第一轮循环:第一步,出现食物;第二步,蛇不停运动;第三步,检查蛇是撞到自己或墙壁;由第四步起游戏有两条支线(A、B):
A :第四步,蛇没有碰到自己或墙壁,蛇继续前进,绘制蛇的动作;第五步,判断蛇是否吃到食物,如果蛇吃到食物,身子变长,原来的食物消失;第六步,让玩家输入控制指令,让蛇在下一轮循环的第二步改变运动方向;第七步,第二轮循环的第一步,重复第一轮的步骤;
B:第四步,蛇碰到自己或墙壁,终止游戏。
3.结束部分:
游戏结束时,显示“GAME OVER”
五(程序描述
蛇:
基本描述:长度,颜色,位置。
8
对应数据与数据类型:长度—虽然可以用坐标表示,但是这样的话,运算量将很大,所以换算成较大的单位—节数,以固定长度的每节描述;坐标--整型;颜色--整型; 位置--X,Y坐标。
增加的描述:蛇运动的方向,蛇的生命。
对应数据与数据类型:这些描述是为了与程序的按键的输入部分与判断游戏结束部分相联系而设的。方向只有四个方向:上下左右。可以设置与之对应的四个整型数:3、4、2、1。生命就只有两种情况:死或生,对应0或1。 食物:
基本描述:颜色,位置。
对应数据与数据类型:由于颜色设成固定的,所以不再讨论。位置—X、Y坐标。
增加的描述:食物的存在。
对应数据与数据类型:这是为了避免重复出现食物而设置的,与绘制食物的函数有联系。只有两个值:0或1(没有食物或有食物)
其他的元素:墙,由于它在显示上是作为背景而存在的,所以并没有什么说明实际的墙壁就是四条直线组成的边框,由坐标描述。
还需要的变量:键盘键入的键值(作为全局变量,整型);经常要使用的循环变量;自定义的填充图案;说明文字的字符数组;游戏的记分;游戏的速度(蛇的速度)。
六(程序流程图
9
10
七(程序源代码及注释
#include
#include #include #include /*引用的库函数*/ #define LEFT 0x4b00 #define RIGHT 0x4d00 #define DOWN 0x5000 #define UP 0x4800 #define ESC 0x011b/*宏定义键名*/ #define N 200
int i,key;
int level;/*游戏等级*/
int score=0;/*得分*/
int gamespeed;/*游戏速度*/
struct Food
{
int x;/*食物的横坐标*/
int y;/*食物的纵坐标*/
11
int yes;/*判断是否要出现食物的变量*/ }food;/*食物的结构体*/
struct Snake
{
int x[N];
int y[N];
int node;/*蛇的节数*/
int direction;/*蛇移动方向*/ int life;/* 蛇的生命,0活着,1死亡*/ }snake;/*蛇的结构体*/
void Choicelevle(void);/*选择游戏等级*/ void Init(void);/*图形驱动*/ void Close(void);/*图形结束*/ void DRAW(void);/*游戏区域*/ void GameOver(void);/*结束游戏*/ void GamePlay(void);/*玩游戏具体过程*/ void PrScore(void);/*输出成绩*/ /*主函数*/
void main(void) {
12
Init();/*图形驱动*/
Choicelevle();/*选择游戏等级*/ DRAW();/*游戏区域*/
GamePlay();/*玩游戏具体过程*/
Close();/*图形结束*/
}
/*图形驱动*/
void Init(void)
{
int gd=DETECT,gm; initgraph(&gd,&gm,"\\turboc2"); /*初始化图形系统*/
cleardevice(); /*清除图形界面*/ }
/*选择游戏等级*/
void Choicelevle(void) {
setcolor(YELLOW); settextstyle(0,0,6); outtextxy(150,150,"Snake");
13
setcolor(GREEN);
settextstyle(0,0,1);
outtextxy(200,250,"Choice levle from") ;
outtextxy(200,275,"1.SLUG 2.WORM 3.PYTHON");
outtextxy(220,300,"please choice 1or2or3.");
getch();
printf("please choice levle:"); scanf("%d",&level);
gamespeed=100000-5000*level; if(level>3||level<1)
{cleardevice(); /*清除图形界面*/
setcolor(RED); /*设置字体颜色*/
settextstyle(0,0,2); /*设置字体类型*/
outtextxy(150,200,"level input error"); /*显示文本*/ getch();
level=1;
}
}
void DRAW(void)
{cleardevice(); /*清屏*/
14
setcolor(2);
setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*设置线型*/ rectangle(50,40,610,460); }
/*玩游戏具体过程*/
void GamePlay(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())/*在没有按键的情况下,蛇自己移动身体*/ {
15
if(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);
rectangle(food.x,food.y,food.x+10,food.y-10);
}
for(i=snake.node-1;i>0;i--)/*蛇的每个环节往前移动*/ {
snake.x[i]=snake.x[i-1]; snake.y[i]=snake.y[i-1];
16
}
/*1,2,3,4表示右,左,上,下四个方向,通过这个控制来移动蛇头*/ switch(snake.direction) {
case 1: snake.x[0]+=10;break; case 2: snake.x[0]-=10;break; case 3: snake.y[0]-=10;break; case 4: snake.y[0]+=10;break; }
for(i=3;i595||snake.y[0]<55||snake.y[0]>455)
{
GameOver();
snake.life=1;
}
if(snake.life==1)/*如果蛇死就跳出内循环,重新开始*/ break;
if(snake.x[0]==food.x&&snake.y[0]==food.y)/*吃到食物以后*/ {
setcolor(0);/*把画面上的食物东西去掉*/
rectangle(food.x,food.y,food.x+10,food.y-10); /*用当前线型和颜色画一矩形*/
snake.x[snake.node]=-20;snake.y[snake.node]=-20;
/*新的一节先放在看不见的位置,下次循环就取前一节的位置*/ snake.node++;/*蛇的身体长一节*/
food.yes=1;/*画面上需要出现新的食物*/
if(level==1)
{
score+=1;
18
}
else if(level==2) {
score+=2;
}
else if(level==3) {
score+=3;
}
else
score+=level; if(score%12==0) {
level++;gamespeed=gamespeed-5000;
}
PrScore();/*输出新得分*/ }
setcolor(4);/*画出蛇*/
for(i=0;i
本文档为【C语言“贪吃蛇”程序设计报告】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。