Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Christoph Mini JLI'ler
Anmeldedatum: 24.08.2003 Beiträge: 17
Medaillen: Keine
|
Verfasst am: 10.09.2003, 05:14 Titel: DirectInput8 Tastenverzögerung |
|
|
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 ! |
|
Nach oben |
|
|
TheMillenium Dark JLI'ler
Anmeldedatum: 21.07.2002 Beiträge: 1427 Wohnort: World Medaillen: Keine
|
Verfasst am: 10.09.2003, 11:57 Titel: |
|
|
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! _________________ The source of all power is in its destiny... |
|
Nach oben |
|
|
Christoph Mini JLI'ler
Anmeldedatum: 24.08.2003 Beiträge: 17
Medaillen: Keine
|
Verfasst am: 10.09.2003, 16:39 Titel: |
|
|
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 |
|
|
TheMillenium Dark JLI'ler
Anmeldedatum: 21.07.2002 Beiträge: 1427 Wohnort: World Medaillen: Keine
|
Verfasst am: 10.09.2003, 17:30 Titel: |
|
|
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. _________________ The source of all power is in its destiny... |
|
Nach oben |
|
|
|