|
发表于 2014-3-17 15:52:53
|
显示全部楼层
看了楼主,引起共鸣,贡献一下我的贪吃蛇代码,大神勿喷
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<windows.h>
#include<time.h>
//蛇
struct snake
{
int x;
int y;
}sna[100];
int len=2; //蛇长
//绘制地图
int map[15][15]={0};
void gameover(int a,int b);//-----------------------------------------------------
//食物生成
void food()
{
int x,y;
while(1)
{
x=rand()%14+0;
y=rand()%14+0;
if(map[x][y]==0)
{
map[x][y]=19;
break;
}
}
}
//初始化
void beg()
{
//食物初始化
food();
//墙体初始化
for(int i=0;i<15;i+=14)
for(int j=0;j<15;j++)
map[i][j]=10;
for(i=1;i<14;i++)
{
map[i][0]=10;
map[i][14]=10;
}
//蛇体初始化
map[1][2]=6;
map[1][1]=6;
sna[0].x=1;
sna[0].y=2;
sna[1].x=1;
sna[1].y=1;
}
//地图物体绘制
void outmap()
{
system("cls");
for(int i=0;i<15;i++,printf("\n"))
for(int j=0;j<15;j++)
if(map[i][j]==0)
printf(" ");
else if(map[i][j]==10)
printf("□");
else if(map[i][j]==6)
printf("○");
else if(map[i][j]==19)
printf("¤");
}
//蛇的移动
void move(int a,int b)
{
gameover(a,b);
if(map[sna[0].x+a][sna[0].y+b]==19)
{
map[sna[0].x+a][sna[0].y+b]=6;
len++;
food();
}
map[sna[len-1].x][sna[len-1].y]=0;
for(int i=1;i<len;i++)
{
sna[len-i].x=sna[len-i-1].x;
sna[len-i].y=sna[len-i-1].y;
}
map[sna[0].x+=a][sna[0].y+=b]=6;
map[sna[len-1].x][sna[len-1].y]=6;
}
void gameover(int a,int b)
{
if(map[sna[0].x+a][sna[0].y+b]==10 || //撞墙
map[sna[0].x+a][sna[0].y+b]==6) //撞自己
{
system("cls");
printf("%s","you lose");
exit(0);
}
}
//开始界面
void title(char &c)
{
printf("%s","welcome to snake game\n");
printf("%s","a.开始游戏\n");
printf("%s","b.退出游戏\n");
char a=getch();
switch(a)
{
case 'a':c='a';break;
case 'b':exit(1);
}
}
void main()
{
char c='b';
int a=0;
int b=1;
int begin,now;
while(c!='a')
{
title(c);
system("cls");
}
beg();
while(1)
{
begin=clock();
while(now=clock()-begin<500)
{
if(kbhit())
{
c=getch();
if(c=='w')
{
a=-1;
b=0;
}
if(c=='s')
{
a=1;
b=0;
}
if(c=='a')
{
a=0;
b=-1;
}
if(c=='d')
{
a=0;
b=1;
}
}
}
outmap();
move(a,b);
}
} |
|