云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 贪吃蛇游戏课程设计报告

贪吃蛇游戏课程设计报告

  • 62 次阅读
  • 3 次下载
  • 2025/12/10 22:18:42

rand();//随机数发生器

food.yes=1;//1表示需要出现新食物,0表

示已经存在食物 snake.life=0;//蛇活着 snake.direction=1;//方向往右

snake.x[0]=100;snake.y[0]=100;//舌头坐

标 snake.x[1]=110;snake.y[1]=100 ; snake.node=2;//蛇的节数 PrScore();//输出分数

while(1)//可重复玩游戏,按ESC键结束 {

while(!kbhit())//在没有按键的情况下,蛇自己移动身体 {

if(food.yes==1)//需要出现新食

物 { food.x=rand()@0+60; food.y=rand()50+60;

while(food.x!=0)//食物

随即出现后必须让食物能够在整格内,这样才能让蛇迟到

food.x++;

while(food.y!=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];

}

switch(snake.direction)//1,2,3,4表示上

下左右四个方向,通过这个判断来移动蛇头 { 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;i

蛇的第四节开始判断是否撞到自己了,因为蛇头为两节,第三节不可能拐过来 {

if(snake.x[i]==snake.x[0]&&snake.y[i]=

=snake.y[0]) { GameOver();//显示失败 snake.life=1; break;

}

}

if(snake.x[0]<55||snake.x[0]>595||snak

e.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]==foo

d.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; score+=10;

PrScore();//输出新的得分

}

setcolor(WHITE);//画出蛇 for(i=0;i

rectangle(snake.x[i],snake.y[i],snake.

x[i]+10,snake.y[i]-10); Sleep(gamespeed);

setcolor(0);//用黑色去除蛇的最

后一节

rectangle(snake.x[snake.node-1],snake.

y[snake.node-1],snake.x[snake.node-1]+10,snake.y[snake.node-1]-10);

}

if(snake.life==1)//如果蛇死就跳出循环

break;

key=getchar();//接受案件 if(key==Esc)//按ESC键退出

break;

else

if(key==UP&&snake.direction!=4)

snake.direction=3;

else if(key==RIGHT&&snake.direction!=2)

snake.direction=1;

else

if(key==LEFT&&snake.direction!=1)

snake.direction=2;

else

if(key==DOWN&&snake.direction!=3)

snake.direction=4;

}//endwhile(1)

}

void GameOver()//游戏结束 { cleardevice(); PrScore(); setcolor(RED);

outtextxy(100,100,\我会回来的!!!!!\ getch();

}

void PrScore()//输出成绩 {

char str[10];

setfillstyle(SOLID_FILL,YELLOW); bar(50,15,220,35); setcolor(6);

sprintf(str,\ outtextxy(55,20,str);

}

void Close()//图形结束 { getch(); closegraph();

}

搜索更多关于: 贪吃蛇游戏课程设计报告 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

rand();//随机数发生器 food.yes=1;//1表示需要出现新食物,0表示已经存在食物 snake.life=0;//蛇活着 snake.direction=1;//方向往右 snake.x[0]=100;snake.y[0]=100;//舌头坐标 snake.x[1]=110;snake.y[1]=100 ; snake.node=2;//蛇的节数 PrScore();//输出分数 while(1)//可重复玩游戏,按ESC键结束 { while(!kbhit())//在没有按键的情况下,蛇自己移动身体 { if(food.yes==1)//需要出现新食物 { food

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com