C语言编程之旅,从基础到高级——打造你的贪吃蛇游戏

admin 科普百科 2024-09-01 98 0

在这个数字化时代,编程已经成为了一项非常受欢迎的技能,它不仅能够帮助我们解决实际问题,还能够激发我们的创造力和逻辑思维能力,在众多编程语言中,C语言以其简洁、高效的特点而广受开发者喜爱,我们将一起探索如何使用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语言的知识,包括数据结构、算法、图形库等。

编程是一项需要耐心和细心的工作,但当你看到自己编写的程序运行起来时,那种成就感是无法用言语来形容的,希望这篇文章能激发你对编程的兴趣,并带领你在编程的世界里继续前行,实践是最好的老师,所以赶快动手尝试一下吧!

版权声明

本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。

分享:

扫一扫在手机阅读、分享本文

评论

最近发表