提供一个贪食蛇的编程案例
时间: 2024-02-22 13:58:29 浏览: 57
当然可以!以下是一个简单的 C 语言贪食蛇编程案例,基于控制台:
```c
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#define WIDTH 30
#define HEIGHT 20
#define SNAKE_LENGTH 5
int x[WIDTH * HEIGHT], y[WIDTH * HEIGHT];
int food_x, food_y;
int snake_length = SNAKE_LENGTH;
int score = 0;
int direction = 0;
int game_over = 0;
void init_snake() {
for (int i = 0; i < snake_length; i++) {
x[i] = WIDTH / 2 - i;
y[i] = HEIGHT / 2;
}
}
void generate_food() {
srand(time(NULL));
food_x = rand() % WIDTH;
food_y = rand() % HEIGHT;
}
void draw() {
system("cls");
for (int i = 0; i < HEIGHT; i++) {
for (int j = 0; j < WIDTH; j++) {
if (i == 0 || i == HEIGHT - 1 || j == 0 || j == WIDTH - 1) {
printf("#");
} else if (i == food_y && j == food_x) {
printf("O");
} else {
int is_body = 0;
for (int k = 0; k < snake_length; k++) {
if (x[k] == j && y[k] == i) {
printf("X");
is_body = 1;
}
}
if (!is_body) {
printf(" ");
}
}
}
printf("\n");
}
printf("Score: %d\n", score);
}
void update() {
int prev_x = x[0], prev_y = y[0];
int prev2_x, prev2_y;
x[0] += direction == 1 ? 1 : direction == 3 ? -1 : 0;
y[0] += direction == 2 ? 1 : direction == 4 ? -1 : 0;
for (int i = 1; i < snake_length; i++) {
prev2_x = x[i];
prev2_y = y[i];
x[i] = prev_x;
y[i] = prev_y;
prev_x = prev2_x;
prev_y = prev2_y;
}
if (x[0] == 0 || x[0] == WIDTH - 1 || y[0] == 0 || y[0] == HEIGHT - 1) {
game_over = 1;
return;
}
for (int i = 1; i < snake_length; i++) {
if (x[i] == x[0] && y[i] == y[0]) {
game_over = 1;
return;
}
}
if (x[0] == food_x && y[0] == food_y) {
score += 10;
snake_length++;
generate_food();
}
}
int main() {
init_snake();
generate_food();
while (!game_over) {
draw();
update();
if (_kbhit()) {
switch (_getch()) {
case 'w':
case 'W':
direction = 4;
break;
case 's':
case 'S':
direction = 2;
break;
case 'a':
case 'A':
direction = 3;
break;
case 'd':
case 'D':
direction = 1;
break;
}
}
Sleep(100);
}
printf("\nGame over! Your score is: %d\n", score);
return 0;
}
```
在这个程序中,我们定义了许多变量和常量,包括贪食蛇的坐标、食物的坐标、蛇的长度、分数、方向和游戏状态。我们还定义了一些函数来初始化贪食蛇、生成食物、绘制游戏界面和更新游戏状态。
在 `main()` 函数中,我们初始化贪食蛇和食物,然后进入游戏循环。在每个循环中,我们绘制游戏界面、更新游戏状态,并响应用户输入来改变贪食蛇的方向。当游戏结束时,我们打印出游戏结束信息,包括分数。
当您编译并运行此程序时,您将在控制台中看到一个贪食蛇游戏界面,您可以使用键盘上的 W、A、S、D 键来控制贪食蛇的方向,吃到食物后分数会增加,并且贪食蛇的长度会增加。当贪食蛇碰到边界或自己的身体时,游戏结束。
阅读全文