c - SDL/SDL_gfx 库中的动画表面
问题描述
我正在使用 sdl2 库在 c 中重新创建游戏“超级六边形”。
我在应用程序中间画了一个圆圈,当玩家与键盘(左右键)交互时,小光标(不是鼠标,而是圆圈周围的三角形)应该围绕它移动,如下所示:
void Game_run(struct Game *game)
{
//Previous rendering are cleared.
SDL_RenderClear(game->renderer);
//-------------------------------------------------------
if (filledCircleRGBA(game->renderer,SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2, 10,255, 255, 255, 255) != 0)
{
fprintf(stderr, "Error: the circle was not rendered\n");
SDL_DestroyRenderer(game->renderer);
}
arcRGBA( game->renderer, SCREEN_WIDTH/2, SCREEN_HEIGHT/2, 100, 0, 80, 255, 255, 255, 255 );
filledTrigonRGBA (game->renderer, CURSOR_POSITION_X-10, CURSOR_POSITION_Y, CURSOR_POSITION_X+10, CURSOR_POSITION_Y, CURSOR_POSITION_X, CURSOR_POSITION_Y+10, 255, 255, 255, 255);
SDL_RenderPresent(game->renderer);
//-------------------------------------------------------
//We are payng
game->state = PLAYING;
SDL_Event event;
SDL_bool GameRunning = SDL_TRUE;
while (GameRunning) //while the player didnt loose, the game is running
{
while (SDL_PollEvent(&event))
{
/* code */
switch (event.type)
{
//when a key is pressed
case SDL_KEYDOWN:
//Detecting the pressed key
switch (event.key.keysym.sym)
{
case SDLK_LEFT:
printf("Left key pressed\n");
break;
case SDLK_RIGHT:
printf("Right key pressed\n");
break;
default:
break;
}
break;
//when a key is unpressed
case SDL_KEYUP:
switch (event.key.keysym.sym)
{
case SDLK_LEFT:
printf("Left key up\n");
break;
case SDLK_RIGHT:
printf("Right key up\n");
break;
default:
break;
}
break;
//if the user quit the game
case SDL_QUIT:
//The game is over
GameRunning = SDL_FALSE;
game->state = GAME_OVER;
break;
default:
break;
}
}
}
}
我已经实现了事件监听器来检测用户输入。但我不知道如何为这些元素设置动画。
我应该如何处理这个问题?我想了解当我使用 gfx 函数渲染元素时动画是如何工作的。我需要先将绘制的元素加载到 SDL_Surface 中吗?
解决方案
推荐阅读
- python-3.x - GIT Bash错误= bash:winpty:找不到命令
- quill - Quilljs 文本“区域”
- javascript - 无法使用 AngularJs 在数字“1”上创建属性“主题”
- html - SQL 中的 HTML 编码
- mysql - mariadb:性能并行查询
- python - 使用 Beautifulsoup 解析 Airdna.co
- java - 如何在另一个方法中使用主方法中的对象
- python - 将二维列表更改为标准矩阵形式
- python - Flask-Login:如何将 current_user 设置为 AnonymousUserMixin 对象?
- c++ - 将参数传递给c ++构造函数时VS编译错误