SDL-Programmteil aus einem Konsolenprogramm starten
-
Hallo,
kann mir jemand erklären, wie ich eine Funktion (die SDL-Code enthält) aus einem Konsolenprogramm heraus starten kann? Die SDL-Funktion "simuliere()" (siehe unten) öffnet einen schwarzes Vollbild. Sie wird bei Drücken der Esc-Taste beendet. Mein Problem: Das (von der Funktion geöffnete) Vollbild friert ein, wird aber nicht beendet und muss mit dem Tastmanager geschlossen werden. Was mache ich falsch?
int main(int argc, char *argv[]) { int zahl = simuliere(); cout<<"ENDE"; system("PAUSE"); return EXIT_SUCCESS; }
-
Dieser Thread wurde von Moderator/in evilissimo aus dem Forum C++ in das Forum Spiele-/Grafikprogrammierung verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Zeig doch erstmal, was diese Funktion "simuliere()" genau macht. Die Kristallkugel hab ich nämlich grad verliehen

-
Die Funktion üffnet ein SDL-Vollbild und simuliert einen Planeten, der um einen Stern kreist. Beim Drücken der Esc-taste wird die Funktion unterbrochen und gibt den Wert 0 zurück.
int simuliere() { // Initialize SDL if(SDL_Init(SDL_INIT_VIDEO) == -1) { fprintf(stderr, "Failed to initialize SDL: %s\n", SDL_GetError()); exit(1); } atexit(SDL_Quit); // Initilize the screen //SDL_Surface *screen = SDL_SetVideoMode(auflx, aufly, 16, SDL_HWSURFACE|SDL_DOUBLEBUF); //Teilscreen SDL_Surface *screen = SDL_SetVideoMode(auflx, aufly, 16, SDL_FULLSCREEN|SDL_DOUBLEBUF); //Fullscreen if(screen == NULL){ fprintf(stderr, "Unable to set video mode: %s\n", SDL_GetError()); exit(1); } //Hier steht normalerweise der Code für die Simulation // Check if user quits SDL_Event event; while(SDL_PollEvent(&event)){ switch(event.type){ case SDL_QUIT: isRunning = false; break; case SDL_KEYDOWN: if(event.key.keysym.sym == SDLK_ESCAPE) isRunning = false; break; case SDL_MOUSEBUTTONDOWN: beweis = 0;}} SDL_QUIT; return 0; }
-
Bis auf eine absolut grauenhafte Formatierung ist mir beim ersten Überfliegen nichts aufgefallen. Geh doch mal mit dem Debugger drüber und suche die Zeile, ab der es einfriert.
-
Ach du Scheiße, wer schreibt denn sowas? 240 Zeilen in _einer_ Funktion und Du bemühst Dich nichtmal herauszufinden, wo die Ausführung ungefähr hängt?
-
Ich arbeite momentan mit Dev-C++ und weiß nicht, wo ich den Debugger finde. Den ungefähren Bereich, wo die Funktion hängenbleibt, kann ich aber angeben. Es muss an den unteren Zeilen liegen, da die Simulation selbst einwandfrei funktioniert. Ich habe meinen Beitrag von vorhin editiert und die unwesentlichen Stellen gelöscht. Wie gesagt, es hängt wahrscheinlich an den letzten Zeilen, ich kann mir aber nicht vorstellen, wo genau.
-
habe es nicht getestet, aber lass mal das
system("PAUSE");weg...
-
Unter Dev-C++ hat man immer irgendwelche Konflikte zwischen console und sdl
mit visual studio hab ich dieses problem weniger
-
xBlackKnightx schrieb:
Unter Dev-C++ hat man immer irgendwelche Konflikte zwischen console und sdl
mit visual studio hab ich dieses problem wenigerMan kann auch einfach die MingW Version aktualisieren, oder gar keine IDE nutzen...

@t:
//Hier steht normalerweise der Code für die Simulation
^Gibts da vllt. 'ne Endlosschleife?
-
Es gibt keine Endlosschleife, mit Esc wird die einzige while-Schleife unterbrochen.
Aber ich habe das Problem anders gelöst. Ich teile mein Programm in 2 Programme auf und rufe sie nacheinander auf.
Vielen Dank für eure Antworten.
-
cbs-schüler schrieb:
Es gibt keine Endlosschleife, mit Esc wird die einzige while-Schleife unterbrochen.
Aber ich habe das Problem anders gelöst. Ich teile mein Programm in 2 Programme auf und rufe sie nacheinander auf.
Vielen Dank für eure Antworten.
wie geht das?