es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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?

Tags:  , ,

Answer

  1. Avatar for 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 y r.y se asignan correctamente, pero r2 se asigna con los valores destinados a r. De manera similar, r4 se asigna con los valores destinados a r3.

    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:

    // Asignación corregida de r2
    r2.w = (int)n.right->width;
    r2.h = (int)n.right->height;
    r2.x = (int)n.right->position.x;
    r2.y = (int)n.right->position.y;
    

    Además, al asignar valores a r4, utiliza los nombres de variable correctos:

    // Asignación corregida de r4
    r4.h = 10;
    r4.w = 10;
    r4.x = 200;
    r4.y = 200;
    
    SDL_FillRect(surface, &r4, SDL_MapRGB(surface->format, 100, 100, 0));
    

    Con estas correcciones, cada variable SDL_Rect debería dibujarse en la ubicación correcta según lo previsto.

Comments are closed.