用C语言变出一个WASD控制方向的贪吃蛇小游戏
地图就很简单粗暴地这样初始化:
char map[13][13] =
{
"************",
"*XXXXH *",
"* *",
"* *",
"* *",
"* *",
"* *",
"* *",
"* *",
"* *",
"* *",
"************"
};
每移动一次地图变化一次,打印地图一次:
void Print()
{
system("clear");
int i,j;
for(i = 0; i < MAP_LENGTH; i++)
{
for(j = 0; j < MAP_LENGTH; j++)
{
printf("%c",map[i][j]);
}
printf("\n");
}
}
移动一次蛇和地图发生变化(x,y分别对应按了WASD中一个键后坐标蛇头坐标的变化):
void snakeMove(int x,int y)
{
if(!is_ok(x,y))
{
getchar();
printf("GAME OVER! ");
getchar();
return ;
}
if(eatfood(x,y))
{
Creat_Food();
}
int i;
for(i = 0; i < snakeLength-1; i++)
{
snakeX[i] = snakeX[i+1];
snakeY[i] = snakeY[i+1];
}
snakeX[snakeLength-1] += x;
snakeY[snakeLength-1] += y;
Clear();
Draw();
}
蛇长度改变:
void Draw()
{
int i;
for(int i = 0; i < snakeLength-1; i++)
map[snakeY[i]][snakeX[i]] = SNAKE_BODY;
map[snakeY[snakeLength-1]][snakeX[snakeLength-1]] = SNAKE_HEAD;
}
随机创建食物:
void Creat_Food()
{
srand(time(0));
int fx,fy;
while(1)
{
fx = rand() % 12;
fy = rand() % 12;
if(map[fx][fy] == ' ')
{
map[fx][fy] = '$';
break;
}
}
}
吃食物:
int eatfood(int x, int y)
{
int headX = snakeX[snakeLength-1]+x;
int headY = snakeY[snakeLength-1]+y;
if(map[headY][headX] == '$')
{
snakeLength++;
snakeX[snakeLength-1] = headX;
snakeY[snakeLength-1] = headY;
return 1;
}
return 0;
}
其他的应该就不难了