Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

04.11.2011, 18:15

Probleme mit der SDL Tastenerkennung

Hallo miteinander,

Ich schreibe gerade an einem textbasiertem Strategiespiel (also Konsolenanwendung) und wollte mein Menü über Tastatur anstatt simpler char Eingabe steuerbar machen. Dafür habe ich mir eine Klasse erstellt, die Funktionen zur Tastenverarbeitung bei jedem einzelnen Untermenü beinhaltet. Allerdings bin ich gleich bei der ersten Funktion (ControlMainMenue) auf ein Problem gestoßen:

Obwohl ich es sowohl mit einer Keydown als auch einer SDL_PollEvent Verzweigung versucht habe, scheint mein Programm nie einen Tastaturdruck zu erkennen. Fehlermeldungen gibt der Compiler nicht an...

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
int CKeyControl::ControlMainMenue ()
{
 run = 0;
 while (run == 0)
 {
  SDL_Event    Event;
  SDL_PumpEvents ();

  if (SDL_PollEvent (&Event))
  {
   switch (Event.type)
   {

       case (SDL_KEYDOWN):
    {
     switch (Event.key.keysym.sym)
     {
     
     case (SDLK_n):
      {
       cout<<"Es hat funktioniert!"<<endl;
       run = 1;
       return 0;

      }break;
     }
    }break;
   }
  }
  }
};


Die Funktion ist noch nicht vollständig, aber es kommt mir vorrangig darauf an erstmal die Tastenerkennung zum Laufen zu bringen! Wie bereits gesagt habe ich ebenso erfolglos bereits die Variante mit einer KeyDown Funktion versucht, so wie sie im Beispiel in Kapitel 12 aufgeführt ist.

Ich wäre wirklich dankbar für einen Lösungsvorschlag, da sich der Fortschritt des Projekts an diesem Problem aufhängt!

Moe

Frischling

Beiträge: 85

Wohnort: München

  • Private Nachricht senden

2

04.11.2011, 18:52

Ich verstehe nicht ganz, was Du machst:
1. Eine Konsolenanwendung
2. Eine Textanwendung in einem SDL-Fenster?

Wenn du 1. machst, solltest Du nicht SDL für die Eingabeevents verwenden, sondern die Benutzereingaben mit C oder C++ I/O lesen. SDL (UI und I/O) funktioniert nur mit einem "richtigen" Fenster, nicht mit der Konsole...
Bei 2. solltest Du deinen Initialisierungscode für das Fenster auch noch posten - ich denke, dass dann eher dort noch etwas fehlt.

3

04.11.2011, 20:33

Danke erstmal für die schnelle Antwort und ja ich wollte etwas in Richtung 1. machen, da im Buch keine Beispiele für Textausgabe mit der SDL sind. Ich dachte dementsprechend man muss die SDL für sowas verwenden. Danke für die Antwort, ich werd mich dann mal über Tastenevents mit C++ I/O informieren... :)

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

4

05.11.2011, 11:08

Wie soll denn dein "textbasiertes Strategiespiel" aussehen?
Kann mir da nicht wirklich was drunter vorstellen. Besonders nicht, wieso du dafür die Konsole UND SDL benötigst.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

5

05.11.2011, 13:03

Danke, das Problem hat sich brereits erledigt (mit Hilfe von getch). Jetzt brauch ich auch keine SDL mehr, da ich die Tasten mit getch verwalte. Was kann man da groß sagen? Es wird ein Strategiespiel bei dem man feindliche Planeten mit Flotten erobern muss, inklusive Menü natürlich. Das ganze wird halt ausschließlich mit Text wiedergegeben und da ist es schöner, wenn man nicht cin benutzt, weil der Benutzer dann immer mit Enter bestätigen muss...

Werbeanzeige