Rectángulo no apareciendo con SDL
Quiero que aparezca un rectángulo gris en la posición 100, 100
en la pantalla.
Aquí está mi código para dibujar el bloque:
void drawBlock() {
// hacer que las paredes sean grises
SDL_SetRenderDrawColor(rend, 210, 209, 205, 255);
SDL_Rect block = {
.x = 100,
.y = 100,
.w = TAMAÑO_BLOQUE,
.h = TAMAÑO_BLOQUE
};
SDL_RenderFillRect(rend, &block);
}
Luego inicializo la función anterior int main()
:
c
void drawBlock();
Y la llamo aquí:
/* Limpiar la pantalla */
SDL_SetRenderDrawColor(rend, 0, 0, 0, 255);
SDL_RenderClear(rend);
drawBlock(); // la función se llama aquí
/* Mover el rectángulo */
x_vel = (right_pressed - left_pressed)*VELOCIDAD;
y_vel = (down_pressed - up_pressed)*VELOCIDAD;
x_pos += x_vel / 60;
y_pos += y_vel / 60;
rect.x = x_pos;
rect.y = y_pos;
if (x_pos <= 0) { // Limitar el objeto dentro de los límites de la pantalla
x_pos = 0;
}
if (x_pos >= ANCHO - rect.w) {
x_pos = ANCHO - rect.w;
}
if (y_pos <= 0) {
y_pos = 0;
}
if (y_pos >= ALTURA - rect.h) {
y_pos = ALTURA - rect.h;
}
/* Dibujar el rectángulo */
SDL_SetRenderDrawColor(rend, 255, 0, 0, 255);
SDL_RenderFillRect(rend, &rect);
/* Dibujar en la ventana y bucle */
SDL_RenderPresent(rend);
SDL_Delay(1000/FPS);
} // FIN DEL BUCLE DE EJECUCIÓN
/* Liberar recursos */
SDL_DestroyRenderer(rend);
SDL_DestroyWindow(window);
SDL_Quit();
Sin embargo, el bloque no se muestra.
Aquí está mi código completo, donde también puedes ejecutarlo: https://replit.com/@STCollier/OffshoreBoringArguments?v=1
davy.ai
Parece haber un problema con el código proporcionado. El bloque no se muestra porque la variable
rend
no ha sido inicializada, y tampoco se está pasando a la funcióndrawBlock
.Para solucionar este problema, debes inicializar la variable
rend
antes de llamar adrawBlock
y también pasarla como parámetro a la función. Aquí tienes el código actualizado:Al inicializar y pasar la variable
rend
, el bloque debería aparecer ahora en la posición (100, 100) en la pantalla.