Donc j'essaie simplement de faire bouger une boîte rouge de 10 x 10 verticalement d'avant en arrière. Je compile et exécute mon programme et la boîte rouge apparaît commence à descendre, puis disparaît juste après avoir atteint le bord de l'écran. J'ai utilisé quelques instructions cout <<
qui me disent quand les fonctions sont appelées et elles sont toutes appelées quand elles sont supposées le faire. Même lorsque la boîte ne peut pas être vue, les fonctions sont correctement appelées.rectangle disparaissant avec SDL
Ma boucle principale
while(running)
{
myScreen->Clear();
boxes.Move();
boxes.Draw();
myScreen->Flip();
........
Mon draw() fonction
SDL_Color red;
red.r = 255;
red.g = 0;
red.b = 0;
if(SDL_FillRect(my_screen->Get_screen(), &start_dest, SDL_MapRGB(
my_screen->Get_pixel_format(), red.r, red.g, red.b)) == -1)`
cout << "Fill rect in Draw(); failed\n";
Ma fonction Déplacer()
start_dest.y += y_step;
if (start_dest.y >= my_screen->Get_height())
{
cout << "start_dest.y >= screen height\n";
start_dest.y = my_screen->Get_height();
y_step = -y_step;
}
if (start_dest.y <= 0)
{
cout << "start_dest.y <= 0\n";
start_dest.y = 0;
y_step = -y_step;
}
J'ai essayé de trouver ce bug pour toujours. Il suffit de laisser un commentaire si quelqu'un veut voir plus de code. Merci
Juste un petit conseil: si vous utilisez un débogueur réel, vous trouverez des bugs beaucoup plus rapidement et de manière beaucoup plus propre que de remplir votre programme avec des 'cout's. –
Peut-être que le bug est causé par un excès de points d'exclamation dans le code source. – avakar
S'il vous plaît dites-moi: quelle valeur va Get_height() retour, et quelle est la valeur initiale de y_step. Il me semble qu'ils parlent dans des unités différentes, et puis getheight n'est jamais atteint et la direction n'est jamais inversée. –