C语言跳跃的小球:一个简单的可视化游戏编程入门

想要学习如何使用C语言创建简单的游戏吗?这个教程将带你实现一个名为'跳跃的小球'的简单可视化小程序。你将学习如何使用C语言和SDL库来绘制图形、处理键盘事件以及实现基本的游戏逻辑。

代码示例

#include <stdio.h>
#include <stdlib.h>
#include <SDL2/SDL.h>

#define WIDTH 640
#define HEIGHT 480
#define BALL_SIZE 20
#define BALL_SPEED 10

int main(int argc, char *argv[]) {
    SDL_Window *window = NULL;
    SDL_Renderer *renderer = NULL;
    SDL_Event event;
    int quit = 0;
    int ball_x = WIDTH / 2 - BALL_SIZE / 2;
    int ball_y = HEIGHT / 2 - BALL_SIZE / 2;
    int ball_dx = BALL_SPEED;
    int ball_dy = BALL_SPEED;

    if (SDL_Init(SDL_INIT_VIDEO) != 0) {
        fprintf(stderr, 'SDL_Init failed: %s
', SDL_GetError());
        return EXIT_FAILURE;
    }

    window = SDL_CreateWindow('Jumping Ball', SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, WIDTH, HEIGHT, SDL_WINDOW_SHOWN);
    if (window == NULL) {
        fprintf(stderr, 'SDL_CreateWindow failed: %s
', SDL_GetError());
        SDL_Quit();
        return EXIT_FAILURE;
    }

    renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);
    if (renderer == NULL) {
        fprintf(stderr, 'SDL_CreateRenderer failed: %s
', SDL_GetError());
        SDL_DestroyWindow(window);
        SDL_Quit();
        return EXIT_FAILURE;
    }

    while (!quit) {
        while (SDL_PollEvent(&event)) {
            switch (event.type) {
                case SDL_QUIT:
                    quit = 1;
                    break;
                case SDL_KEYDOWN:
                    if (event.key.keysym.sym == SDLK_SPACE) {
                        ball_dy = -BALL_SPEED;
                    }
                    break;
            }
        }

        ball_x += ball_dx;
        ball_y += ball_dy;

        if (ball_x < 0 || ball_x > WIDTH - BALL_SIZE) {
            ball_dx = -ball_dx;
        }
        if (ball_y < 0 || ball_y > HEIGHT - BALL_SIZE) {
            ball_dy = -ball_dy;
        }

        SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);
        SDL_RenderClear(renderer);

        SDL_Rect ball_rect = { ball_x, ball_y, BALL_SIZE, BALL_SIZE };
        SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255);
        SDL_RenderFillRect(renderer, &ball_rect);

        SDL_RenderPresent(renderer);
        SDL_Delay(10);
    }

    SDL_DestroyRenderer(renderer);
    SDL_DestroyWindow(window);
    SDL_Quit();

    return EXIT_SUCCESS;
}

代码解释

  1. 包含头文件: 程序开头包含了必要的头文件,包括 stdio.h、stdlib.h 和 SDL2/SDL.h。
  2. 初始化 SDL: 使用 SDL_Init() 初始化 SDL 库。
  3. 创建窗口和渲染器: 使用 SDL_CreateWindow() 创建一个窗口,并使用 SDL_CreateRenderer() 创建一个渲染器。
  4. 游戏循环: 程序使用一个无限循环来保持窗口运行,并在循环中处理事件、更新游戏状态以及渲染画面。
  5. 事件处理: 使用 SDL_PollEvent() 获取事件,并根据事件类型进行相应的处理。例如,当用户按下空格键时,改变小球的垂直速度使其向上跳跃。
  6. 更新游戏状态: 根据小球的速度更新小球的位置。如果小球碰到边界,则反转其速度使其反弹。
  7. 渲染画面: 使用 SDL_SetRenderDrawColor() 设置绘制颜色,使用 SDL_RenderClear() 清空渲染目标,使用 SDL_RenderFillRect() 绘制小球,最后使用 SDL_RenderPresent() 将渲染结果显示在屏幕上。
  8. 控制游戏速度: 使用 SDL_Delay() 函数控制游戏循环的帧率。

编译运行

要编译运行这段代码,你需要安装 SDL 库。安装完成后,可以使用以下命令编译:

gcc -o jumping_ball jumping_ball.c `sdl2-config --cflags --libs`

然后运行编译后的可执行文件:

./jumping_ball

总结

这个简单的示例程序演示了如何使用 C 语言和 SDL 库创建简单的可视化游戏。你可以尝试修改代码,例如改变小球的颜色、大小、速度,或者添加更多的游戏元素,来进一步学习游戏开发的基本概念。

C语言跳跃的小球:一个简单的可视化游戏编程入门

原文地址: https://www.cveoy.top/t/topic/jrge 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录