​c语言贪吃蛇最简单代码

c语言贪吃蛇最简单代码

c语言贪吃蛇最简单代码

#include &ltstdio.h&gt

#include &ltwindows.h&gt

#include &lttime.h&gt

#include &ltconio.h&gt

#define frame_height 20 //define map size

#define frame_width 40

#define UP w //define operate key

#define DOWN s

#define LEFT a

#define RIGHT d

int i,j,k

char ch=UP //initial direction

int grow=0 //flag: if snake grow

struct Food{

int x

int y

}food

struct Snake{

int x[50]

int y[50]

int len

int speed

}snake //snake[0] is head

void init_map(void)

void update_food(void)

void move_snake(void)

int is_alive(void)

void get_speed(void)

void gotoxy(int x, int y)

int main()

{

init_map()  //初始化地图

while(1)

{

update_food() //是否产生食物

get_speed()  //获取速度

move_snake()  //移动蛇身

Sleep(snake.speed) //移动速度

if(!(is_alive())) //蛇的死活(撞墙或自食)

break

}

printf("Game Over!")

getch()

return 0

}

//initialize

void init_map(void)

{

//initial food

srand(time(NULL))

food.x=rand()%(frame_height-2)+1

food.y=rand()%(frame_width-2)+1

gotoxy(food.x, food.y)

printf("!")

//initial snake

snake.x[0]=frame_height/2

snake.y[0]=frame_width/2

gotoxy(snake.x[0], snake.y[0])

printf("@")

snake.len=3

snake.speed=200

for(k=1k&ltsnake.lenk++)

{

snake.x[k]=snake.x[k-1]+1

snake.y[k]=snake.y[k-1]

gotoxy(snake.x[k], snake.y[k])

printf("@")

}

//initial bar

for(j=0j&ltframe_widthj++)

{

gotoxy(0, j)

printf("#")

gotoxy(frame_height-1, j)

printf("#")

}

for(i=1i&ltframe_height-1i++)

{

gotoxy(i, 0)

printf("#")

gotoxy(i, frame_width-1)

printf("#")

}

}

//generate food

void update_food()

{

if(snake.x[0]==food.x&amp&ampsnake.y[0]==food.y)

{

srand(time(NULL))

food.x=rand()%(frame_height-2)+1

food.y=rand()%(frame_width-2)+1

gotoxy(food.x, food.y)

printf("!")

snake.len++

grow=1

}

}

//move snake

void move_snake()

{

if(kbhit())

ch=getch()

if(!grow)

{

gotoxy(snake.x[snake.len-1], snake.y[snake.len-1])

printf(" ")

}

for(k=snake.len-1k&gt0k--)

{

snake.x[k]=snake.x[k-1]

snake.y[k]=snake.y[k-1]

}

switch(ch)

{

case UP:  snake.x[0]--break

case DOWN:  snake.x[0]++break

case LEFT:  snake.y[0]--break

case RIGHT:  snake.y[0]++break

default:  break

}

gotoxy(snake.x[0], snake.y[0])

printf("@")

grow=0

gotoxy(frame_height, 0)

}

//is alive

int is_alive(void)

{

if(snake.x[0]==0||snake.x[0]==frame_height-1||snake.y[0]==frame_width-1||snake.y[0]==0)

return 0

for(k=1k&ltsnake.lenk++)

if(snake.x[k]==snake.x[0]&amp&ampsnake.y[k]==snake.y[0])

return 0

return 1

}

//speed up

void get_speed(void)

{

if(snake.len&lt=6) snake.speed=200

else if(snake.len&lt=10) snake.speed=100

else if(snake.len&lt=20) snake.speed=50

else if(snake.len&lt=30) snake.speed=30

else snake.speed=20

}

//move cursor

void gotoxy(int x, int y)

{

HANDLE hout

COORD cor

hout=GetStdHandle(STD_OUTPUT_HANDLE)

cor.X=y

cor.Y=x

SetConsoleCursorPosition(hout,cor)

}

相关推荐

​新年菜谱家常菜谱

​新年菜谱家常菜谱

199

新年菜谱家常菜谱 步骤/方式一 200克蒜苔切段,400克五花肉切片 步骤/方式二 锅烧热下入五花肉片,翻炒翻炒 步骤/方式三 炒至出油,放盐炒稍黄 步骤/方式四 出锅待用 步骤/方式五 锅...

​运载能力居前三位的火箭

​运载能力居前三位的火箭

137

运载能力居前三位的火箭 1、德尔塔-4运载火箭 德尔塔-4运载火箭是德尔塔系列运载火箭的一个型号,由波音综合国防系统集团(IDS)设计,由位在阿拉巴马州迪凯特的联合发射同盟(...

​怎么评价明朝的王守仁的一生

​怎么评价明朝的王守仁的一生

101

怎么评价明朝的王守仁的一生 王守仁,是明朝著名的思想家、文学家、哲学家和军事家,生于公元1472年,去世于公元1529年,享年59岁。王守仁,浙江绍兴府余姚县人,后随父亲移居绍...

​十大顶级军用水壶

​十大顶级军用水壶

121

十大顶级军用水壶 1、铠斯/KEITH 铠斯是户外品牌和家具品牌,公司主力产品户外系列钛制水壶、水杯、茶具、套锅、餐具、厨具,多年来行销美国及欧盟十多个国家,并与十多国际品牌...

​盱眙十大旅游景点

​盱眙十大旅游景点

110

盱眙十大旅游景点 1、盱眙第一山景区 盱眙第一山国家森林公园位于县城,包括盱城山地淮河滩地两部分,总面积1400公顷。盱眙建县于秦,是一座有2200多年历史的古城。因当时县治设...

​工程测绘包括哪些项目

​工程测绘包括哪些项目

153

工程测绘包括哪些项目 测绘工程,测量空间、大地的各种信息并绘制各种地形图 。以地球及其他行星的形状、大小、重力场为研究对象,研究和测绘的对象十分广泛,主要包括地表的...

​萧峰聚贤庄之战原文

​萧峰聚贤庄之战原文

124

萧峰聚贤庄之战原文 玄难)不等他回答,便即缓步而前,大袖飘动,袖底呼呼呼的拳力向乔峰发出。他这门功夫乃少林寺七十二绝技之一,叫作“袖里乾坤”,衣袖拂起,拳劲却在袖底...

​适合做手机铃声的轻快歌曲

100

适合做手机铃声的轻快歌曲 1、Bubbly--Colbie Caillat(你听过一遍就会非常喜欢的歌) 2、Burning--Maria Arredondo 3、Happy--丽安娜 刘易斯 4、Cry On My Shoulder--出自德国选秀节目(很早的一首,非常...

​曹丕在后世的评价为何不好?他做过哪些荒唐事

99

曹丕在后世的评价为何不好?他做过哪些荒唐事 今天趣历史小编为大家带来了一篇关于曹丕的文章,欢迎阅读哦~ 曹丕是魏国的开国皇帝,他是曹操的次子,有着这样一个显赫身份的曹...

​与刘备之间明明有冲突,袁绍为何还要接纳他?

158

与刘备之间明明有冲突,袁绍为何还要接纳他? 刘备曾经投靠公孙瓒时,在河北战场为袁绍带去了很多麻烦,这也是他们之间的冲突所在。说起这个的话,各位一定都有所耳闻吧。 《...

​同样都是汉初三杰之一 最后为何只有韩信惨死

​同样都是汉初三杰之一 最后为何只有韩信惨死

123

同样都是汉初三杰之一 最后为何只有韩信惨死 今天趣历史小编就给大家带来韩信惨死,希望能对大家有所帮助。 刘邦,出身普通家庭,却不用心种地,整天游手好闲,典型的小混混,...

​元昭宗被抓住后,朱元璋是如何对待他的?

80

元昭宗被抓住后,朱元璋是如何对待他的? 中国传统文化源远流长,博大精深!今天趣历史小编给大家整理了朱元璋的相关内容,不知能否帮助大家拓展一些知识? 唐宋元明清,在中国历...

​棒针毛衣编织款式和方法

​棒针毛衣编织款式和方法

57

棒针毛衣编织款式和方法 棒针毛衣编织款式存很多种,下面根据不同的类别进行阐述。 1、根据领型今为圆领,鸡心领,青果领,方领,中式领,带帽领,低领,高领,半高领,西装领...

​红点颏鸟的饲养与管理

​红点颏鸟的饲养与管理

68

红点颏鸟的饲养与管理 有悠久的历史,也有十分讲究的点颏笼。饲喂的饲料南北地区不尽相同,不过一般用粉料,并经常给些新鲜的牛羊肉末,面粉虫或玉米螟幼虫。 新捕捉来的红点...