c语言小游戏300行代码
时间: 2023-07-31 19:11:35 浏览: 61
以下是一个简单的贪吃蛇游戏,使用了C语言编写,共计300行代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#define UP 'w'
#define DOWN 's'
#define LEFT 'a'
#define RIGHT 'd'
#define WIDTH 20
#define HEIGHT 20
int snake[WIDTH * HEIGHT][2];
int food[2];
int head, tail;
int score;
void init()
{
// 初始化蛇头和蛇身
head = 0;
tail = 0;
snake[head][0] = HEIGHT / 2;
snake[head][1] = WIDTH / 2 - 1;
snake[tail][0] = HEIGHT / 2;
snake[tail][1] = WIDTH / 2;
// 初始化食物
srand(time(0));
food[0] = rand() % HEIGHT;
food[1] = rand() % WIDTH;
// 初始化分数
score = 0;
}
void draw()
{
system("cls");
// 画地图
for (int i = 0; i < HEIGHT; i++)
{
for (int j = 0; j < WIDTH; j++)
{
if (i == snake[head][0] && j == snake[head][1])
{
printf("O");
}
else if (i == food[0] && j == food[1])
{
printf("*");
}
else
{
int flag = 0;
for (int k = tail; k <= head; k++)
{
if (i == snake[k][0] && j == snake[k][1])
{
printf("o");
flag = 1;
break;
}
}
if (flag == 0)
{
printf(" ");
}
}
}
printf("\n");
}
// 显示得分
printf("得分:%d\n", score);
}
void update()
{
// 移动蛇身
for (int i = tail; i < head; i++)
{
snake[i][0] = snake[i + 1][0];
snake[i][1] = snake[i + 1][1];
}
// 移动蛇头
switch (_getch())
{
case UP:
snake[head][0]--;
break;
case DOWN:
snake[head][0]++;
break;
case LEFT:
snake[head][1]--;
break;
case RIGHT:
snake[head][1]++;
break;
}
// 判断是否吃到食物
if (snake[head][0] == food[0] && snake[head][1] == food[1])
{
// 蛇身加一
head++;
snake[head][0] = snake[head - 1][0];
snake[head][1] = snake[head - 1][1];
// 生成新的食物
food[0] = rand() % HEIGHT;
food[1] = rand() % WIDTH;
// 加分
score++;
}
// 判断是否撞墙或撞自己
if (snake[head][0] < 0 || snake[head][0] >= HEIGHT || snake[head][1] < 0 || snake[head][1] >= WIDTH)
{
printf("游戏结束!\n");
exit(0);
}
for (int i = tail; i < head - 1; i++)
{
if (snake[i][0] == snake[head][0] && snake[i][1] == snake[head][1])
{
printf("游戏结束!\n");
exit(0);
}
}
}
int main()
{
init();
while (1)
{
draw();
update();
}
return 0;
}
```
这个程序是一个简单的贪吃蛇游戏,使用了控制台界面。玩家可以通过方向键控制蛇的移动方向,如果蛇头碰到食物,则得分加一,并在随机位置生成新的食物。如果蛇头碰到墙或碰到自己的身体,则游戏结束。程序会记录玩家的得分并在游戏结束时输出。