JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=dbe7a02acbfbc09dc0c60df1ea3d3afaMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

DirectInput8 Tastenverzögerung

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Christoph
Mini JLI'ler



Anmeldedatum: 24.08.2003
Beiträge: 17

Medaillen: Keine

BeitragVerfasst am: 10.09.2003, 05:14    Titel: DirectInput8 Tastenverzögerung Antworten mit Zitat

Hallo!

ich schreibe gerade übungsweise Tetris. Dort habe ich die InputManagerklasse aus dem Buch verwendet. Ich brauche nun eine gewisse Tastenverzögung ( Keyboard)
Diese habe ich folgendermaßen gelöst:

Code:
m_delayings[DIK_UP]++;


        if(buffer[DIK_UP])
        {
           
         if(m_delayings[DIK_UP] == 0)
         {
            Keys += K_ROTATE;
            m_delayings[DIK_UP]++;
         }

         else if(m_delayings[DIK_UP] == (m_delay * Framerate))
         {
         
            Keys += K_ROTATE;   
            
            
         }
         else if((m_delayings[DIK_UP] % (int)(0.3*m_delay*Framerate)) == 0 && m_delayings[DIK_UP] > (m_delay * Framerate))
         {

            Keys += K_ROTATE;

         }
      
        }
      else
        {
         m_delayings[DIK_UP] = -1;
         
      }


m_delaying ist ein 256-Element Integer Array. m_delay ist ein float-Wert, der die Estverzögerung in Sekunden speichert.

Jedoch wirkt das ganze ziemlich träge und ruckelig. Kann mir jemand eine Verbesserung, oder einen anderen Vorschlaggeben? Danke ! Very Happy
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 10.09.2003, 11:57    Titel: Antworten mit Zitat

Code:

// Initialisierung
long time_start=0;
long time_delay=200;
long time_end=0;


// Tastaturabfragefunktion
time_end = timeGetTime();

if(time_end-time_start>time_delay)
{
// Tastatur abfragen...

time_start = timeGetTime();
}


So funktionierts am Besten! Very Happy
_________________
The source of all power is in its destiny...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Christoph
Mini JLI'ler



Anmeldedatum: 24.08.2003
Beiträge: 17

Medaillen: Keine

BeitragVerfasst am: 10.09.2003, 16:39    Titel: Antworten mit Zitat

hast du diesen Code chonmal erfolgreich getestet?

Wenn ich mich nicht irre, würde es ja dann eine Verzögerben, wenn man eine Taste drückt, da es ja möglich ist, dass man die Taste genau während des Delays drückt. Somit wird aber erst ein "Signal gesendet", wenn die Delayzeit vorbei ist. Oder täusche ich mich?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 10.09.2003, 17:30    Titel: Antworten mit Zitat

Ich habe das so in meinem Spiel drinnen und keine Probleme damit und bis jetzt hat sich noch keiner von meinen Testern (paar von meinen Freunden) noch nciht beschwert.

Ich weiß jetzt auch nicht, ob das lpDIDevice->GetDeviceState die Daten solange speichert, bis das Delay vorüber ist, aber es funktioniert. Very Happy
_________________
The source of all power is in its destiny...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum