用c语言编写一个贪吃蛇游戏
时间: 2023-09-20 13:06:40 浏览: 128
### 回答1:
贪吃蛇游戏是一种经典的游戏,使用C语言可以很容易地实现。下面是一个基本的贪吃蛇游戏的代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <windows.h>
#define WIDTH 50
#define HEIGHT 20
#define SNAKE_LENGTH 100
typedef struct Snake {
int x, y;
} Snake;
Snake snake[SNAKE_LENGTH];
int length = 4;
int direction = 1;
int score = 0;
void init();
void show();
void update();
void create_food();
int gameover();
int get_key();
int main() {
init();
while (1) {
show();
update();
Sleep(100);
if (gameover()) break;
}
printf("Game Over! Your score is %d.\n", score);
system("pause");
return 0;
}
void init() {
int i;
for (i = 0; i < length; i++) {
snake[i].x = WIDTH / 2 - i;
snake[i].y = HEIGHT / 2;
}
create_food();
}
void show() {
int i, j;
system("cls");
for (i = 0; i <= WIDTH; i++) printf("#");
printf("\n");
for (j = 0; j < HEIGHT; j++) {
printf("#");
for (i = 0; i < WIDTH; i++) {
if (i == snake[0].x && j == snake[0].y) printf("S");
else if (i == snake[length - 1].x && j == snake[length - 1].y) printf("o");
else if (i == food_x && j == food_y) printf("F");
else {
int k, f = 0;
for (k = 1; k < length - 1; k++) {
if (snake[k].x == i && snake[k].y == j) {
printf("o");
f = 1;
break;
}
}
if (!f) printf(" ");
}
}
printf("#\n");
}
for (i = 0; i <= WIDTH; i++) printf("#");
printf("\n");
printf("Score: %d\n", score);
}
void update() {
int key = get_key();
if (key == 'w' && direction != 2) direction = 0;
else if (key == 'd' && direction != 3) direction = 1;
else if (key == 's' && direction != 0) direction = 2;
else if (key == 'a' && direction != 1) direction = 3;
int i;
for (i = length - 1; i > 0; i--) {
snake[i].x = snake[i - 1].x;
snake[i].y = snake[i - 1].y;
}
if (direction == 0) snake[0].y--;
else if (direction == 1) snake[0].x++;
else if (direction == 2) snake[0].y++;
else if (direction == 3) snake[0].x--;
if (snake[0].x == food_x && snake[0].y == food_y) {
score += 10;
create_food();
length
### 回答2:
贪吃蛇游戏是一款经典的游戏,可以使用C语言编写。下面是一个简单的贪吃蛇游戏实现的示例代码:
```c
#include <stdio.h>
#include <conio.h>
#include <windows.h>
#define WIDTH 20
#define HEIGHT 20
int score = 0;
int gameover = 0;
int speed = 10;
int x, y; // 蛇头的坐标
int fruitX, fruitY; // 水果的坐标
int tailX[100], tailY[100]; // 蛇的身体
int nTail; // 蛇身的长度
enum Direction { STOP = 0, LEFT, RIGHT, UP, DOWN }; // 蛇的方向
enum Direction dir;
void Setup()
{
gameover = 0;
dir = STOP;
x = WIDTH / 2;
y = HEIGHT / 2;
fruitX = rand() % WIDTH;
fruitY = rand() % HEIGHT;
}
void Draw()
{
system("cls");
for (int i = 0; i < WIDTH + 2; i++)
printf("#");
printf("\n");
for (int i = 0; i < HEIGHT; i++)
{
for (int j = 0; j < WIDTH; j++)
{
if (j == 0)
printf("#");
if (i == y && j == x)
printf("O");
else if (i == fruitY && j == fruitX)
printf("F");
else
{
int tail = 0;
for (int k = 0; k < nTail; k++)
{
if (tailX[k] == j && tailY[k] == i)
{
printf("o");
tail = 1;
}
}
if (!tail)
printf(" ");
}
if (j == WIDTH - 1)
printf("#");
}
printf("\n");
}
for (int i = 0; i < WIDTH + 2; i++)
printf("#");
printf("\n");
}
void Input()
{
if (_kbhit())
{
switch (_getch())
{
case 'a':
dir = LEFT;
break;
case 'd':
dir = RIGHT;
break;
case 'w':
dir = UP;
break;
case 's':
dir = DOWN;
break;
case 'x':
gameover = 1;
break;
}
}
}
void Logic()
{
int prevX = tailX[0];
int prevY = tailY[0];
int prev2X, prev2Y;
tailX[0] = x;
tailY[0] = y;
for (int i = 1; i < nTail; i++)
{
prev2X = tailX[i];
prev2Y = tailY[i];
tailX[i] = prevX;
tailY[i] = prevY;
prevX = prev2X;
prevY = prev2Y;
}
switch (dir)
{
case LEFT:
x--;
break;
case RIGHT:
x++;
break;
case UP:
y--;
break;
case DOWN:
y++;
break;
}
if (x >= WIDTH) x = 0;
else if (x < 0) x = WIDTH - 1;
if (y >= HEIGHT) y = 0;
else if (y < 0) y = HEIGHT - 1;
for (int i = 0; i < nTail; i++)
{
if (tailX[i] == x && tailY[i] == y)
gameover = 1;
}
if (x == fruitX && y == fruitY)
{
score += 10;
fruitX = rand() % WIDTH;
fruitY = rand() % HEIGHT;
nTail++;
}
}
int main()
{
Setup();
while (!gameover)
{
Draw();
Input();
Logic();
Sleep(speed);
}
printf("Game Over! Your score: %d\n", score);
return 0;
}
```
这段代码实现了一个简单的贪吃蛇游戏。蛇头可以通过键盘控制移动,吃到水果后身体会延长,如果蛇头撞到墙壁或者撞到自己的身体,游戏结束,并显示最终得分。
### 回答3:
贪吃蛇游戏是一款经典的游戏,我们可以用C语言来编写它。
首先,我们需要使用C语言对游戏进行逻辑设计和图形化界面的实现。我们可以使用C语言的图形库来创建一个窗口,以显示游戏界面。
游戏的主要逻辑包括蛇的移动和食物的生成。我们可以定义一个蛇的结构体来跟踪蛇的位置和长度,以及一个食物的结构体来确定食物的位置。
实现蛇的移动可以通过键盘输入来控制,我们可以使用C语言的输入函数来读取键盘输入。根据输入的方向,我们可以更新蛇的位置。当蛇吃掉食物时,蛇的长度应该增加,并且新的食物需要生成。
在游戏进行过程中,我们还需要判断蛇是否碰到墙壁或自己的身体,这样就会导致游戏结束。我们可以在每次蛇移动后进行碰撞检测,并根据结果来决定游戏是否结束。
为了提升游戏体验,我们还可以添加一些额外的功能,如计分板和速度调整。计分板用来记录玩家吃掉的食物数目,速度调整可以根据玩家的水平调整蛇的移动速度。
最后,在游戏结束后,我们可以显示玩家的得分,并询问玩家是否要重新开始。
总的来说,我们可以用C语言编写一个贪吃蛇游戏,通过设计游戏的逻辑和图形化界面来实现。这样,玩家就可以通过键盘控制蛇的移动,并享受这个经典游戏的乐趣。
阅读全文