K
Knobbers
Hallo,
ich bin C++ Anfänger und ich versuche gerade mit SDL ein kleines Spiel zu programmieren.
Bisher habe ich einen Fenster, in dem sich ein blaues Rechteck jede Sekunden ein Stück nach rechts verschieben soll, und das solange, wie ich in meiner for-Schleife angebe.
Zum Problem: Das Fenster bleibt zwar so lange geöffnet, wie ich es will, allerdings hört nach 5 Sekunden das Rechteck ohne (für mich) ersichtlichen Grund auf, sich zu bewegen. Hat jemand eine Idee, warum das so ist?
Hier ist der Code:
int main(int argc, char *argv[]){
SDL_Surface *pScreen;
SDL_Rect Rect;
Rect.x = 10;
Rect.y = 10;
Rect.w = 10;
Rect.h = 10;
Timer MyTimer;
SDL_Init (SDL_INIT_VIDEO | SDL_INIT_TIMER);
pScreen = SDL_SetVideoMode (800, 600, 16, SDL_HWSURFACE | SDL_DOUBLEBUF | SDL_FULLSCREEN);
for (int i = 0; i < 20; i++){
MyTimer.warte();
SDL_FillRect (pScreen, NULL, SDL_MapRGB (pScreen->format,0,0,0));
SDL_FillRect (pScreen, &Rect, SDL_MapRGB (pScreen->format,0,0,250));
Rect.x = Rect.x + 10;
SDL_Flip(pScreen);
}
SDL_Quit();
return 0;
}
"Timer" ist eine kleine Klasse, die die Zeit messen kann. Hab sie hier weggelassen, da sie einwandfrei funktioniert.
Danke für Eure Hilfe,
Knobbers
ich bin C++ Anfänger und ich versuche gerade mit SDL ein kleines Spiel zu programmieren.
Bisher habe ich einen Fenster, in dem sich ein blaues Rechteck jede Sekunden ein Stück nach rechts verschieben soll, und das solange, wie ich in meiner for-Schleife angebe.
Zum Problem: Das Fenster bleibt zwar so lange geöffnet, wie ich es will, allerdings hört nach 5 Sekunden das Rechteck ohne (für mich) ersichtlichen Grund auf, sich zu bewegen. Hat jemand eine Idee, warum das so ist?
Hier ist der Code:
int main(int argc, char *argv[]){
SDL_Surface *pScreen;
SDL_Rect Rect;
Rect.x = 10;
Rect.y = 10;
Rect.w = 10;
Rect.h = 10;
Timer MyTimer;
SDL_Init (SDL_INIT_VIDEO | SDL_INIT_TIMER);
pScreen = SDL_SetVideoMode (800, 600, 16, SDL_HWSURFACE | SDL_DOUBLEBUF | SDL_FULLSCREEN);
for (int i = 0; i < 20; i++){
MyTimer.warte();
SDL_FillRect (pScreen, NULL, SDL_MapRGB (pScreen->format,0,0,0));
SDL_FillRect (pScreen, &Rect, SDL_MapRGB (pScreen->format,0,0,250));
Rect.x = Rect.x + 10;
SDL_Flip(pScreen);
}
SDL_Quit();
return 0;
}
"Timer" ist eine kleine Klasse, die die Zeit messen kann. Hab sie hier weggelassen, da sie einwandfrei funktioniert.
Danke für Eure Hilfe,
Knobbers