在这个数字化时代,编程已经成为了一项非常受欢迎的技能,它不仅能够帮助我们解决实际问题,还能够激发我们的创造力和逻辑思维能力,在众多编程语言中,C语言以其简洁、高效的特点而广受开发者喜爱,我们将一起探索如何使用C语言来编写一个经典的贪吃蛇游戏。
贪吃蛇是一款经典的电子游戏,它的玩法简单却富有挑战性,玩家需要控制一条不断增长的蛇去吞食屏幕上的食物,每吃到一个食物,蛇身就会变长一节,如果蛇头撞到了自己的身体或者游戏区域的边缘,游戏就结束了,让我们开始动手编写这个游戏吧!

我们需要准备一个开发环境,如果你还没有安装C语言编译器,可以下载一些免费的编译器,比如MinGW或GCC,安装完成后,我们可以开始编写代码了。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define WIDTH 20
#define HEIGHT 20
#define FOOD_SIZE 5
#define SNAKE_SIZE 10
int snake[HEIGHT][WIDTH];
int foodX, foodY;
int tailX, tailY;
void initBoard() {
for (int i = 0; i < HEIGHT; i++) {
for (int j = 0; j < WIDTH; j++) {
snake[i][j] = -1;
}
}
int x = rand() % WIDTH;
int y = rand() % HEIGHT;
foodX = x;
foodY = y;
}
void printBoard() {
for (int i = 0; i < HEIGHT; i++) {
for (int j = 0; j < WIDTH; j++) {
printf("%d ", snake[i][j]);
}
printf("\n");
}
}
void moveSnake(int dx, int dy) {
int headX = tailX + dx;
int headY = tailY + dy;
if (headX >= 0 && headX < WIDTH && headY >= 0 && headY < HEIGHT && snake[headY][headX] == -1) {
snake[headY][headX] = SNAKE_SIZE;
tailX = headX;
tailY = headY;
} else {
snake[tailY][tailX] = -1;
}
}
int checkGameOver() {
for (int i = 0; i < HEIGHT; i++) {
for (int j = 0; j < WIDTH; j++) {
if (snake[i][j] == SNAKE_SIZE && snake[i][j] != snake[i][j-1]) return 1;
if (snake[i][j] == SNAKE_SIZE && snake[i][j] != snake[i][j+1]) return 1;
if (snake[i][j] == SNAKE_SIZE && snake[i][j] != snake[i-1][j]) return 1;
if (snake[i][j] == SNAKE_SIZE && snake[i][j] != snake[i+1][j]) return 1;
}
}
return 0;
}
int main() {
srand(time(NULL));
initBoard();
while (1) {
printf("Food: (%d,%d)\n", foodX, foodY);
printBoard();
int dx, dy;
char input;
scanf(">%c", &input);
switch (input) {
case 'a': dx = -1; dy = 0; break;
case 's': dx = 0; dy = 1; break;
case 'w': dx = 1; dy = 0; break;
case 'd': dx = 0; dy = -1; break;
default: continue;
}
moveSnake(dx, dy);
if (checkGameOver()) {
printf("Game Over!\n");
break;
}
bool collision = false;
for (int i = 0; i < HEIGHT; i++) {
for (int j = 0; j < WIDTH; j++) {
if (snake[i][j] == SNAKE_SIZE && snake[i][j] == foodX && snake[i][j] == foodY) {
foodX = rand() % WIDTH;
foodY = rand() % HEIGHT;
snake[tailY][tailX] = SNAKE_SIZE;
tailX++;
tailY++;
}
if (snake[i][j] == SNAKE_SIZE && snake[i][j] == tailX && snake[i][j] == tailY) {
collision = true;
break;
}
}
if (collision) break;
}
if (!collision) {
for (int i = 0; i < HEIGHT; i++) {
for (int j = 0; j < WIDTH; j++) {
if (snake[i][j] == -1) snake[i][j] = SNAKE_SIZE;
}
}
}
}
return 0;
}这段代码实现了最基本的贪吃蛇游戏,你可以通过键盘上的方向键(上、下、左、右)来控制蛇的方向,如果你想要更高级的功能,比如动态得分、音效或者图形界面,你需要学习更多关于C语言的知识,包括数据结构、算法、图形库等。
编程是一项需要耐心和细心的工作,但当你看到自己编写的程序运行起来时,那种成就感是无法用言语来形容的,希望这篇文章能激发你对编程的兴趣,并带领你在编程的世界里继续前行,实践是最好的老师,所以赶快动手尝试一下吧!
版权声明
本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。









评论