用vs写贪吃蛇代码c语言,用C语言编写贪吃蛇代码(难度可选)
时间: 2024-02-25 20:55:26 浏览: 154
tanchishe.rar_c 小游戏代码_c语言 小游戏_c语言 贪吃蛇_c语言小游戏_贪吃蛇
好的,我可以为您提供一个简单难度的C语言贪吃蛇代码示例。代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <Windows.h>
#define ROW 20
#define COL 20
int map[ROW][COL] = { 0 }; //地图
int snake[ROW*COL][2] = { 0 }; //蛇
int food[2] = { 0 }; //食物
int head = 0, tail = 0; //蛇头和蛇尾指针
int dir = 0; //蛇的方向
int score = 0; //得分
void init_map() //初始化地图
{
for (int i = 0; i < ROW; i++)
{
for (int j = 0; j < COL; j++)
{
if (i == 0 || j == 0 || i == ROW - 1 || j == COL - 1)
{
map[i][j] = -1; //设置边界
}
else
{
map[i][j] = 0; //清空地图
}
}
}
}
void init_snake() //初始化蛇
{
int x = ROW / 2, y = COL / 2;
map[x][y] = 1; //设置蛇头
snake[head][0] = x;
snake[head][1] = y;
head++;
map[x][y + 1] = 2; //设置蛇身
snake[head][0] = x;
snake[head][1] = y + 1;
head++;
map[x][y + 2] = 3; //设置蛇尾
snake[head][0] = x;
snake[head][1] = y + 2;
head++;
tail = 1;
}
void init_food() //初始化食物
{
int x, y;
do
{
x = rand() % ROW;
y = rand() % COL;
} while (map[x][y] != 0); //找到一个空位置
map[x][y] = -2; //设置食物
food[0] = x;
food[1] = y;
}
void draw_map() //绘制地图
{
system("cls"); //清屏
for (int i = 0; i < ROW; i++)
{
for (int j = 0; j < COL; j++)
{
if (map[i][j] == -1)
{
printf("#"); //画边界
}
else if (map[i][j] == -2)
{
printf("*"); //画食物
}
else if (map[i][j] > 0)
{
printf("o"); //画蛇身
}
else
{
printf(" "); //画空格
}
}
printf("\n");
}
printf("得分:%d\n", score);
}
void update_snake() //更新蛇
{
int x = snake[tail][0], y = snake[tail][1];
map[x][y] = 0; //清空蛇尾
tail++;
x = snake[head - 1][0];
y = snake[head - 1][1];
switch (dir)
{
case 0: //向上
x--;
break;
case 1: //向右
y++;
break;
case 2: //向下
x++;
break;
case 3: //向左
y--;
break;
}
if (map[x][y] == -2) //吃到了食物
{
score++;
init_food();
}
else if (map[x][y] > 0) //撞到了蛇身
{
printf("游戏结束,得分:%d\n", score);
exit(0);
}
map[x][y] = head + 1; //更新蛇头
snake[head][0] = x;
snake[head][1] = y;
head++;
}
void control() //控制方向
{
if (_kbhit())
{
char ch = _getch();
switch (ch)
{
case 'w':
case 'W':
if (dir != 2)
{
dir = 0;
}
break;
case 'd':
case 'D':
if (dir != 3)
{
dir = 1;
}
break;
case 's':
case 'S':
if (dir != 0)
{
dir = 2;
}
break;
case 'a':
case 'A':
if (dir != 1)
{
dir = 3;
}
break;
}
}
}
int main()
{
init_map();
init_snake();
init_food();
while (1)
{
draw_map();
update_snake();
control();
Sleep(100); //控制蛇的速度
}
return 0;
}
```
这是一个简单版的贪吃蛇代码,包含了基本的地图、蛇、食物、控制等功能,您可以根据自己的需求进行修改和扩展。
阅读全文