Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Sa Jul 19, 2025 21:46

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: frage zu SDL_KEYDOWN
BeitragVerfasst: Fr Mai 13, 2005 20:52 
Offline
DGL Member

Registriert: Di Jun 22, 2004 17:40
Beiträge: 51
Wohnort: Aachen
ich versuche grad durch meine virtuelle welt zu laufen.. dazu brauch ich natürlich tasten :D
vorwärts, rückwärts, strafen und drehen klappt auch schon gut, nur kann ich immer nur eine taste auf einmal drücken.
wenn ich dann noch eine andere taste drücke, stoppt die bewegung, die durch das halten der ersten hervorgerufen wurde.

hier mal code ausschnitt:
Code:
  1. procedure glHandleEvents;
  2. var event       : TSDL_Event;
  3. begin;
  4.     // Verarbeiten der Events
  5.     while ( SDL_PollEvent( @event ) = 1 ) do
  6.     begin
  7.            case event.type_ of
  8. .....
  9.                   // Taste wurde gedrückt
  10.                   SDL_KEYDOWN :
  11.                   begin
  12.                          Keys[event.key.keysym.sym] := True;
  13.                   end;
  14.  
  15.                   SDL_KEYUP :
  16.                   begin
  17.                          Keys[event.key.keysym.sym] := False;
  18.                   end;
  19. ......
  20.            end;
  21.            TastenAuswirkungen;
  22.     end;
  23. end;


Code:
  1. var Keys : Array[0..300] of Boolean;


TastenAuswirkungen (z.B. für 'w'):
Code:
  1. procedure TastenAuswirkungen;
  2. begin
  3.      if Keys[SDLK_w] = True then
  4.         begin
  5.              zR := zR + cos(degtorad(rotation));
  6.              xR := xR - sin(degtorad(rotation));
  7.         end;
  8. ......
  9. end;


ich hoffe ich hab jetz nichts vergessen :)
kann mir da vielleicht jemand helfen, dass ich auch 2 tasten (oder noch mehr) auf einmal drücken kann und die entsprechenden bewegungen für alle gedrückten tasten auch ausgeführt werden?
danke im vorraus :D


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mai 13, 2005 20:59 
Offline
Fels i.d. Brandung
Benutzeravatar

Registriert: Sa Mai 04, 2002 19:48
Beiträge: 3830
Wohnort: Tespe (nahe Hamburg)
Also ganz spontan sieht das eigentlich gut aus und funktioniert bei mir auch mit mehren Tasten. Bist Du Dir 100% sicher, dass das Problem nicht irgendwie mit der Programmlogik zu tun hat? Einen kleinen Flieger nach vorne bewegen und gleichzeitig eine Kurve fliegen klappt bei mir ohne Unterbrechung... Stopp...beim zweiten Blick, komme ich doch ins Zweifeln. Macht es Sinn diese Abfrage in der Schleife durchzuführen? Was ist wenn nicht genauso viele Events auftreten wie Tasten? Ziehe mal die Verarbeitung deiner Tasten aus der Schleife heraus und setze es unten drunter. So habe ich es zumindest hier laufen.

_________________
"Light travels faster than sound. This is why some people appear bright, before you can hear them speak..."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Mai 14, 2005 09:28 
Offline
DGL Member

Registriert: Di Jun 22, 2004 17:40
Beiträge: 51
Wohnort: Aachen
yeah das war des problems lösung :D
herzlichen dank.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.007s | 14 Queries | GZIP : On ]