C语言跳跃的小球:一个简单的可视化游戏编程入门
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;
}
代码解释
- 包含头文件: 程序开头包含了必要的头文件,包括
stdio.h、stdlib.h和SDL2/SDL.h。 - 初始化 SDL: 使用
SDL_Init()初始化 SDL 库。 - 创建窗口和渲染器: 使用
SDL_CreateWindow()创建一个窗口,并使用SDL_CreateRenderer()创建一个渲染器。 - 游戏循环: 程序使用一个无限循环来保持窗口运行,并在循环中处理事件、更新游戏状态以及渲染画面。
- 事件处理: 使用
SDL_PollEvent()获取事件,并根据事件类型进行相应的处理。例如,当用户按下空格键时,改变小球的垂直速度使其向上跳跃。 - 更新游戏状态: 根据小球的速度更新小球的位置。如果小球碰到边界,则反转其速度使其反弹。
- 渲染画面: 使用
SDL_SetRenderDrawColor()设置绘制颜色,使用SDL_RenderClear()清空渲染目标,使用SDL_RenderFillRect()绘制小球,最后使用SDL_RenderPresent()将渲染结果显示在屏幕上。 - 控制游戏速度: 使用
SDL_Delay()函数控制游戏循环的帧率。
编译运行
要编译运行这段代码,你需要安装 SDL 库。安装完成后,可以使用以下命令编译:
gcc -o jumping_ball jumping_ball.c `sdl2-config --cflags --libs`
然后运行编译后的可执行文件:
./jumping_ball
总结
这个简单的示例程序演示了如何使用 C 语言和 SDL 库创建简单的可视化游戏。你可以尝试修改代码,例如改变小球的颜色、大小、速度,或者添加更多的游戏元素,来进一步学习游戏开发的基本概念。
原文地址: https://www.cveoy.top/t/topic/jrge 著作权归作者所有。请勿转载和采集!