Autor Beitrag
Moritz M.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1672



BeitragVerfasst: So 15.12.02 11:29 
Hi

Ich habe ein pong spiel, einen balken kann man bewegen. Nur leieder geht die Tastatur sehr langsam. Kann man das umstellen?
lightning_in_the_dark
Hält's aus hier
Beiträge: 6



BeitragVerfasst: So 15.12.02 11:34 
Hi Leuts
hmm.. Du meinst, dass sich der Balken sehr langsam bewegt, wenn du eine Taste gedrückt hälst. Ich würde pro "Zyklus" einfach mehr Pixel zur Position adieren.

MfG
lightning_in_the_dark
DeCodeGuru
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1333
Erhaltene Danke: 1

Arch Linux
Eclipse
BeitragVerfasst: So 15.12.02 11:35 
Start -> Einstellungen -> Systemsteuerung -> Tastatur -> Wiederholrate

Ich hoffe, das hilft.

_________________
Viele Grüße
Jakob
Moritz M. Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1672



BeitragVerfasst: So 15.12.02 11:49 
Das wäre auch eine Lösung, nbur müsste das der User selbst einstellen. Ich suche eine Lösung, die nur in meinem Prog zählt
tommie-lie
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 4373

Ubuntu 7.10 "Gutsy Gibbon"

BeitragVerfasst: So 15.12.02 20:32 
uiii, das geht glaub' ich irgendwie mit DirectInput.
Aber wie wär's denn mit ein paar Variabeln? Im KeyDown wird dann die Variable gesetzt, je nachdem, welche Taste gedrückt wurde. Dann guckst du in deiner Endlosschleife, die auch den Pong-Ball bewegt (der GLCadencer ;-), ich weiß was gemeint ist) ob die links- oder die rechts-variable gesetzt ist. Dementsprechend bewegst du dann das Paddle um eine konstante Anzahl an Pixeln (per Vektor). So einfach geht das auch ohne DirectInput.
Auf Wunsch gibt's auch ein Codebeispiel...

Tschüß
Thomas

_________________
Your computer is designed to become slower and more unreliable over time, so you have to upgrade. But if you'd like some false hope, I can tell you how to defragment your disk. - Dilbert
Moritz M. Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1672



BeitragVerfasst: So 15.12.02 20:39 
Ein Codebespiel wäre nett(Ich nehm nen Timer :wink: )
tommie-lie
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 4373

Ubuntu 7.10 "Gutsy Gibbon"

BeitragVerfasst: So 15.12.02 20:49 
also ein Cadencer wäre immer von Vorteil. Der hat auch gleich 'n DeltaTime drin....

codebeispiel:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
var: Direction: set of (left, right);

procedure KeyDown;
begin
  if Key = VK_Left then
    Direction := left
  else if Key = VK_Right then
    Direction := right;
end;

procedure CadencerProgress;
begin
  if Direction = left then
    Paddle.bewege_nach_links
  else if Direction = right then
    Paddle.bewege_nach_rechts;
end;


Der Code ist ohne nachgucken und ausprobieren geschrieben wurden, die Prozeduren sind cniht richtig deklariert, die Aufrufe teilweise auch falsch, aver der Sinn, der dahinter steckt, dürfte klar sien.

_________________
Your computer is designed to become slower and more unreliable over time, so you have to upgrade. But if you'd like some false hope, I can tell you how to defragment your disk. - Dilbert
Aya
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1964
Erhaltene Danke: 15

MacOSX 10.6.7
Xcode / C++
BeitragVerfasst: Di 17.12.02 07:49 
Hi,

du kannst die Tastatur ganz einfach so schnell machen wie es die CPU zulässt.. :)

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
var
  Keys: Array[0..255] of Boolean;

procedure OnKeyDown...
begin
  Keys[Key]:=true;
end;

procedure OnKeyUp...
begin
  Keys[Key]:=false;
end;

procedure OnTimer... //TTimer.OnTimer Event
begin
  if Keys[VK_LEFT] then
    GoLeft;
  if Keys[VK_RIGHT] then
    GoRight;
  //blbla... dein Code halt *g*
end;


Den Timer Intervall kannst du jetzt einfach auf 1ms setzen oder was du halt gern willst... wenn die tastatur langsam reagierne soll halt auf 100... versuch's einfach :)

Au'revoir,
Aya~
Moritz M. Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1672



BeitragVerfasst: Di 17.12.02 08:00 
Really thanks!! :P
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 17.12.02 09:37 
Aya hat folgendes geschrieben:

du kannst die Tastatur ganz einfach so schnell machen wie es die CPU zulässt.. :)

Das ist falsch! Wenn du mit einem Timer arbeitest kannst du es nur so schnell machen wie die Auflösung des Timers vom Betriebssystem ist und die ist vom OS abhängig. Wiondows2000 hat zum Beipsiel eine höhere Auflösung wie Windows 9x. Bei einem von beiden liegt die mindest Auflösung bei 50 ms, wenn du jetzt 1 ms angibts, wird im günstigsten Falls ein Timer-Ereigniss auch nur alle 50 ms ausgelöst. Im günstigesten Fall, weill nicht sicher ist, dass deine Anwendung auch alle 50 ms dazu kommt die WM_TIMER Nachricht auch alle 50 ms abzuholen. Braucht die Anwendung für die Nachrichte, die davor ligen länger kann es passieren, das deinen Anwendung erst nach 100 ms oder gar erst 200 ms dazu kommt die Timer Nachricht abzuholen.
enigma
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 18



BeitragVerfasst: Di 17.12.02 13:43 
Wenn du einen Timer nehmen willst würde ich den DXTimer aus DelphiX nehmen.
Den stellst du auf Null und dann läuft der Code wirklich so schnell wie die CPU es zulässt
tommie-lie
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 4373

Ubuntu 7.10 "Gutsy Gibbon"

BeitragVerfasst: Di 17.12.02 16:00 
oder den TGLCadencer. Ist ja im Prinzip auch nur ein Timer.
Aber ich finde Ayas Lösung für nur zwei Tasten ein bisschen zu kompolex. Wenn noch mehr Tasten dazukommen, würde es vielleicht was bringen, aber ich würde für 2 Tasten trotzdem einfach 2 Boolean-Variablen (bzw ein Set) nehmen, weil's übersichtlicher ist (meiner Meinung nach). Nachher wird dann eifnach nur abgefragt, welche Richtung "true" ist und schon hat man's.

_________________
Your computer is designed to become slower and more unreliable over time, so you have to upgrade. But if you'd like some false hope, I can tell you how to defragment your disk. - Dilbert
Moritz M. Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1672



BeitragVerfasst: Di 17.12.02 20:10 
Ich habs jetzt mit nem Timer und allen tasten gemacht, weil ich noch mher Funktionen hab, die öfters aufgerufen werden müssen.
Und es geht sehr gut!! :lol:
Really Thanks!! :P