Tasten einlesen
-
Ich hab zwar im FAQ gesehen wie man Tasten einliest, aber ich weiß nicht wie ich das in meinen Code schreibe, ich hab das mal so versucht, das klappt aber nicht:
if (ReadKey=8) { return 0; }
Wie schreibe ich es richtig (will die Leertaste einlesen).
So ist es im FAQ gezeigt: (z.B. IF ReadKey=#wert THEN ...).
THX
-
So ist es in der FAQ nicht gezeigt, dein Code stammt von der Seite auf der die Ganzen Tastaturcodes aufgelistet sind - dort gehts aber um Pascal, also nichts für dich.
Du liest am besten mit getch() ein, siehe ebenfalls FAQ.
if(getch() == ' ') cout << "Leerzeichen gedrueckt." << endl;
MfG SideWinder
-
Oh, danke dachte ich hätte irgendwie gelsen das die codes auch mit C++ funktionieren, wohl verlesen.
-
Irgendwie funktioniert das doch alles nicht so wie ich mir das vorstelle. Egal was ich verscueh mein Programm hängt sich auf. Wie würdet ihr denn folgendes Problem lösen:
Ich habe ein BlackJack Spiel programmiert, am anfang soll ein Anfangsscreen angezeigt werden. Um die Bitmap anzuzeigen habe ich eine extra Funktion mit SDl geschrieben. Dieses Bild soll aber nur einmal angezeigt werden (entweder für ein paar sekunden so lange bis der Benutzer eine Taste drückt.), aber da in der Funktion eine Schleife ist weiß ich nicht wie ich es anstellen soll das das Programm aus der Schleife springt und wieder zurück in men Dosfesnter und dann anfängt mit dem BlackJack Spiel.
wäre euch sehr sehr danbar wenn ihr da eine Idee hättet
-
versuchs mit
while ( ! kbhit() )
aus der conio.h
solange keine taste gedrückt...
-
Die lösung war viel einfacher als ich dachte, ich habe es jetzt bei der fi anweisung und der variable belassen. Und nach der Schleife wird einfach die main Funktion aufgerufen. SO einfach war das
Jetzt hab ich aber noch ein Problem. Der Speicher wird zwar nach der Schleife frei gegeben:/* bitmap muß freigegeben werden */ SDL_FreeSurface(bitmap);
Aber das irgendwie verschwindet das Bild nicht wenn ich es einmal schließe. Man kann dann zwar anfangen zu spielen aber das sieht ja doof aus wenn das Bild dann die ganze zeit im Hintergrund herumlungert. Und das schlimme ist wenn man es ein zweites versucht es zu schließen hängt sich wieder alles auf.
Gibt es irgendeinen SDL befehl um das Bild nach der Speicherfreigabe auch wirklich zu schließen? Eigentlich sollte das von allein passieren, oder? Aber irgendwie passiert das nicht. Wenn ihr gern mal den Code sehen möchtet bitte bescheid sagen (aber nur wenn es sein muss, denn ich hab... sagen wir mal einen sehr eigenwilligen stile).
-
Nö Code ist nicht nötig. Das ist ganz einfach Verständnisproblem.
Wenn das Bild verschwinden soll, dann musst du das auch explizit in deinem Quellcode angeben. Einfach den Arbeitsspeicher für das Bild wieder freizugeben reicht nicht. Schließlich wurde das Bild ja in den Videospeicher (!= Arbeitsspeicher) gesetzt, damit es angezeigt wird. Wenn das Bild also "verschwinden" soll, dann musst das Bild im Videospeicher überzeichnen. Das geht z. B. ganz einfach indem du den Bildschirm löschst (alles wird schwarz überzeichnet). Such mal nach einer Funktion zum Bildschirm löschen bei deinem SDL.