SDL me está llevando a un mal viaje con FillRect.
SDL_Rect r3;
r3.h = 10;
r3.w = 10;
r3.x = 10;
r3.y = 10;
SDL_Rect r4;
r3.h = 10;
r3.w = 10;
r3.x = 20;
r3.y = 20;
SDL_FillRect(surface, &r3, SDL_MapRGB(surface->format, 100, 0 ,100));
SDL_FillRect(surface, &r4, SDL_MapRGB(surface->format, 100, 100 ,0));
Entonces, lo curioso y muy extraño. Tal vez no sé algo, pero R4 es R3. No, no estoy loco, dibujará r3 y r4 en el mismo lugar.
Comenté SDL_FillRect(surface, &r4, SDL_MapRGB(surface->format, 100, 100 ,0));
y aún se dibuja el rectángulo en las coordenadas de r4. Esto me vuelve loco, chicos.
SDL_Rect r3;
r3.h = 10;
r3.w = 10;
r3.x = 10;
r3.y = 10;
SDL_Rect r4;
r3.h = 10;
r3.w = 10;
r3.x = 200;
r3.y = 200;
//SDL_FillRect(surface, &r3, SDL_MapRGB(surface->format, 100, 0 ,100));
SDL_FillRect(surface, &r4, SDL_MapRGB(surface->format, 100, 100 ,0));
Ahora R4 no se dibuja en absoluto
SDL_Rect r;
r.w = n.left->width;
r.h = n.left->height;
r.x = n.left->position.x;
r.y = n.left->position.y;
SDL_Rect r2;
r.w = (int)n.right->width;
r.h = (int)n.right->height;
r.x = (int)n.right->position.x;
r.y = (int)n.right->position.y;
SDL_Rect r3;
r3.h = 10;
r3.w = 10;
r3.x = 10;
r3.y = 10;
SDL_Rect r4;
r3.h = 10;
r3.w = 10;
r3.x = 200;
r3.y = 200;
//SDL_FillRect(surface, &r3, SDL_MapRGB(surface->format, 100, 0 ,100));
SDL_FillRect(surface, &r3, SDL_MapRGB(surface->format, 100, 100 ,0));
Básicamente, r se dibuja donde se supone que debe dibujarse r2, no se dibuja r2, r3 se dibuja donde se supone que debe estar r4 y no se dibuja r4. ¿Qué demonios?
davy.ai
Parece que hay algunos errores al asignar los valores a las variables SDL_Rect. Algunas asignaciones están utilizando nombres de variables incorrectos, lo que resulta en un comportamiento inesperado. Por ejemplo, en el segundo fragmento de código,
r.w
,r.h
,r.x
yr.y
se asignan correctamente, peror2
se asigna con los valores destinados ar
. De manera similar,r4
se asigna con los valores destinados ar3
.Para solucionar el problema, verifica nuevamente los nombres de las variables en las asignaciones y asegúrate de que coincidan con las variables previstas. Por ejemplo, para asignar
r2
correctamente:Además, al asignar valores a
r4
, utiliza los nombres de variable correctos:Con estas correcciones, cada variable SDL_Rect debería dibujarse en la ubicación correcta según lo previsto.