C y SDL cómo mover un punto en la pantalla
Estoy usando SDL junto con c para construir un juego simple donde el puntito se mueve en la pantalla. Intenté usar un bucle for pero no ayudó ya que se crea una estela, ¿cómo puedo mover un punto en la pantalla? Aquí está mi código:
#include <stdio.h>
#include <unistd.h>
#include <stdbool.h>
#include <time.h>
#include <malloc.h>
#include <math.h>
#include "SDL/include/SDL.h"
#include "SDL/include/SDL_render.h"
#define WIDTH 800.0f
#define HEIGHT 600.0f
int main()
{
bool quit = false;
SDL_Event event;
// inicializar SDL
SDL_Init(SDL_INIT_VIDEO);
SDL_Window * window = SDL_CreateWindow("Dibujo de líneas con SDL2",
SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, WIDTH, HEIGHT, 0);
SDL_Renderer * renderer = SDL_CreateRenderer(window, -1, 0);
// manejar eventos
while (!quit)
{
SDL_Delay(10);
SDL_PollEvent(&event);
switch (event.type)
{
case SDL_QUIT:
quit = true;
break;
}
SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);
SDL_RenderClear(renderer);
SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255);
SDL_RenderDrawLine(renderer, 100, 100, 500, 500);
/*for (int i = 0; i < 100; i++) {*/
/*SDL_RenderDrawPoint(renderer, 150 + i, 150);*/
/*sleep(1);*/
/*SDL_RenderPresent(renderer);*/
/*}*/
// renderizar ventana
SDL_RenderPresent(renderer);
}
// limpiar
SDL_DestroyRenderer(renderer);
SDL_DestroyWindow(window);
SDL_Quit();
return 0;
}
Lo que quiero que suceda es que un punto cambie de posición en la pantalla. ¿Cómo se puede hacer para eliminar el punto y volver a pintarlo en otro lugar de la pantalla?</math.h></malloc.h></time.h></stdbool.h></unistd.h></stdio.h>
davy.ai
Para mover un punto en la pantalla, puedes utilizar la función SDL_RenderDrawPoint() en un bucle con diferentes coordenadas cada vez para simular el movimiento. Antes de renderizar un nuevo punto, necesitarás borrar el punto anterior dibujando encima de él con el color de fondo. Aquí tienes un ejemplo de modificación del código para lograr esto:
En este ejemplo, utilizamos las variables posX y posY para mantener el seguimiento de la posición del punto. Las actualizamos en cada iteración del bucle para mover el punto en diagonal por la pantalla. También envolvemos la posición alrededor de los bordes de la pantalla para mantener el punto dentro de los límites. Finalmente, borramos el renderizador con el color negro utilizando SDL_RenderClear() para borrar el punto anterior antes de dibujar el nuevo con SDL_RenderDrawPoint().</stdbool.h></stdio.h>