教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 高中教育 >

C语言贪吃蛇代码,新手很容易上手

来源:网络收集 时间:2026-09-29
导读: 没做什么积分,复杂地图,就是简单的实现贪吃蛇的功能, /* WIN-TC BGI 图形编程模板 */ #include Conio.h #include graphics.h #include time.h #include stdio.h #include stdlib.h #include dos.h #define closegr closegraph #define Max 100 #define ENTER

没做什么积分,复杂地图,就是简单的实现贪吃蛇的功能,

/* WIN-TC BGI 图形编程模板 */

#include "Conio.h"
#include "graphics.h"
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include <dos.h>

#define closegr closegraph
#define Max 100

#define ENTER 7181
#define UP 18432
#define DOWN 20480
#define LEFT 19200
#define RIGHT 19712
#define LOWERV 12150
int score=0;
int gamespeed=1000;
void rungame();
struct Food
{ int x;
int y;
int status;
}food;

struct Snake
{ int x[Max];
int y[Max];
int dir; /* 1东,2南,3西,4北*/
int status; /* 1活,0死*/
int length;

}snake;

void initgr(void) /* BGI初始化 */
{
int gd = DETECT, gm = 0; /* 和gd = VGA,gm = VGAHI是同样效果 */
registerbgidriver(EGAVGA_driver);/* 注册BGI驱动后可以不需要.BGI文件的支持运行 */
initgraph(&gd, &gm, "");

}

void bwall()
{ int i=0;
setbkcolor(6);
cleardevice();
setcolor(11);
setlinestyle(0,0,3);
setfillstyle(1,4);
for(i=0;i<65;i++)
{
rectangle(0+i*10,0,10+i*10,10);
rectangle(630-i*10,460,640-i*10,470);
}
for(i=0;i<65;i++)
{
rectangle(0,0+i*10,10,10+i*10);
rectangle(630,460-i*10,640,470-i*10);
}

}
void csnake(){
int i;
srand(time(NULL));
snake.x[0]=30; /*((rand()%200)/10)*10+20; 随机位置设置 */
snake.y[0]=30; /*((rand()%200)/10)*10+20; */
snake.x[1]=snake.x[0]-10;
snake.y[1]=snake.y[0];
snake.length=2;
snake.dir=1;
snake.status=1;
food.status=1;
setcolor(1);
setlinestyle(0,0,3);
rectangle(snake.x[0],snake.y[0],snake.x[0]+10,snake.y[0]+10);
setlinestyle(1,0,3);
rectangle(snake.x[1],snake.y[1],snake.x[1]+10,snake.y[1]+10);
}

void playgame()
{
bwall(); /*建立围墙 */
csnake(); /* 建蛇 */
rungame(); /*蛇行走过程*/
}


void adfood(int count)
{ food.x=100; /* ((rand()%400)/10)*10+20; 随机食物位置 */
food.y=100; /*((rand()%400)/10)*10+20; */
setcolor(14);
setlinestyle(1,0,3);
rectangle(food.x,food.y,food.x+10,food.y+10); /* 食物添加 */
food.status--;
printf(" status:%d ",food.status);
}


void swfood() /*吃食步骤*/
{
setcolor(6);
setlinestyle(0,0,3);
rectangle(food.x,food.y,food.x+10,food.y+10);
snake.length++;
snake.x[snake.length-1]= snake.x[snake.length-2];
snake.y[snake.length-1]= snake.x[snake.length-2];
printf("swfood ,length:%d",snake.length);
food.status++;
printf(" status:%d ",food.status);
}

void rungame()
{
int x,y;
int i=0;
int s=0;
int key;
int count=0;
srand(time(NULL));


while(++coun
t&&snake.status==1){

/*printf(" %dth circle:", count); */
/*printf("bcheck A ");*/

for(i=0;i<100;i++){

没做什么积分,复杂地图,就是简单的实现贪吃蛇的功能,

delay(gamespeed);
if(bioskey(1)!=0){
key=bioskey(0); /* bioskey(1)检查是否按键,0返回按键值 */
s=1;
break;
}
}
/*printf(" B ");*/
x=snake.x[0];
y=snake.y[0];

if(s==1){ /*printf(" C, ");*/
switch(key)
{
/*按键判断:四个方向*/
case UP:if(snake.dir!=2) { snake.dir=4; y-=10 ;} else y+=10; break;
case DOWN:if(snake.dir!=4) { snake.dir=2; y+=10; } else y-=10; break;
case RIGHT:if(snake.dir!=3) { snake.dir=1; x+=10; } else x-=10; break;
case LEFT:if(snake.dir!=1) { snake.dir=3; x-=10;} else x+=10; break;
case ENTER:exit(0);break;

}
} /* end if 转向判断*/
else
switch(snake.dir)
{
case 1: x+=10; break;
case 2: y+=10; break;
case 3: x-=10; break;
case 4: y-=10; break;
}

if(x>=620||y>=450||x<=10||y<=10)
{ snake.status=0;
printf("you strike the wall"); /* 撞墙后重新开始函数 */
}

if(snake.length>=4)
{ int j;
for(j=1;j<snake.length;j++)
if(x==snake.x[j]&&y==snake.y[j])
{ snake.status=0;
printf("you eat yourself"); /*吃掉自己后重新开始函数 */
}
}

if(x==food.x&&y==food.y)
{
printf("rungame food ,length:%d",snake.length);
swfood();
} /*吃食*/

if(food.status==1) /* 添加食物*/
adfood(count);

if((count-1)%snake.length+1)
{ setcolor(14);
setlinestyle(1,0,3);
rectangle(food.x,food.y,food.x+10,food.y+10);
} /* 下面的蛇身打印会覆盖食物的打印,所以当蛇身走过后要刷新食物才能使食物可见*/

setcolor(6);
setlinestyle(0,0,3);
rectangle(snake.x[snake.length-1],snake.y[snake.length-1],snake.
x[snake.length-1]+10,snake.y[snake.length-1]+10); /* 去掉蛇尾 */

/* printf("x[1]/[2] is %d/%d,snake.length-1/2 is %d/%d",
snake.x[snake.length-1],snake.x[snake.length-2],
snake.length-1,snake.length-2);*/




for(i=snake.length-1;i>0;i--)
{
snake.x[i]=snake.x[i-1];
snake.y[i]=snake.y[i-1];
}

snake.x[0]=x;
snake.y[0]=y;

for(i=0;i<snake.length;i++)
{
setcolor(1);
rectangle(snake.x[i],snake.y[i],snake.x[i]+10,snake.y[i]+10);
}

} /* end while 1*/

}


int mai
n(vo …… 此处隐藏:2191字,全部文档内容请下载后查看。喜欢就下载吧 ……

C语言贪吃蛇代码,新手很容易上手.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/1728676.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150份
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150份
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)