![]() |
Re: Tastendruck abfrage
Na ja in dem Timer-Zyklus will ich ja abfragen was für eine Taste gedrückt wird.
Darum gehts ja Wie setzt man das um? >.< |
Re: Tastendruck abfrage
..nun , dann mußt Du aber Glück haben wenn Du den TimerZyklus erwischt.
Das Tastendruck Event wird immer dann ausgelöst wenn eine Taste gedrückt wird. Unabhängig ob ein Timer aktiv ist oder nicht. Du kannst ja hier:
Delphi-Quellcode:
bestimmte Marker setzen die im TimerZyklus abgefragt werden.
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState); begin if ((spielaktiv > 0) or (not(spielaktiv > 0) and (key <> 27))) then exit; case key of {Escape} VK_ESCAPE: close; {left} VK_LEFT : ; {up} VK_UP : ; {right} VK_RIGHT : ; {bottom} VK_DOWN : ; end; end; Sozusage ein TempSpeicher für Tastendrücke. Grüße Klaus |
Re: Tastendruck abfrage
Also unterbricht das tastendruck-ereignis den TimerZyklus?
Außerdem ist mein Problem, dass trotz keiner gedrückten Taste der Timer2 seine Befehle nichts ausführt, aus welchem Grund auch immer :pale: |
Re: Tastendruck abfrage
Oder im Timer GetKeyState abfragen, und das mit dem FormKeyDown weglassen.
|
Re: Tastendruck abfrage
Wie würde dass dann aussehen? Wie gesagt kenn mich nicht grade gut aus :(
|
Re: Tastendruck abfrage
Zu GetKeyState könntest du mal in der Delphi-Hilfe nachgucken, und hier im Forum suchen.
Deinen Timer2 solltest du im Debugger durchlaufen, und gucken, wo es hängt. Z.B. wenn zblock1 = 0 ist, tut sich da gar nichts, aber das ist von hier aus schlecht feststellbar. |
Re: Tastendruck abfrage
Noch eine Möglichkeit: einen Typen definieren und bei Tastendruck setzen.
Delphi-Quellcode:
Im Timer-Event wertest Du nun FTaste aus und bewegst den Stein entsprechend. Anschließend FTaste wieder auf ttNone setzen.
type TTaste = (ttNone,ttLeft,ttRight,ttDown,ttTurn);
... //privates Feld vom Typ TTaste im Form definieren und mit ttNone initialisieren ... procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if ((spielaktiv > 0) or (not(spielaktiv > 0) and (key <> 27))) then exit; case key of {Escape} VK_ESCAPE: close; {left} VK_LEFT : FTaste := ttLeft; {up} VK_UP : FTaste := ttTurn; {right} VK_RIGHT : FTaste := ttRight; {bottom} VK_DOWN : FTaste := ttDown; end; end; |
Re: Tastendruck abfrage
Ich glaub ich bin immernoch zu doof dazu
also ich hab nun folgendes:
Delphi-Quellcode:
und den anderen Block hab ich übernommen:
case zblock1 of
1:begin {langes} with canvas do begin x:=114; x1:=234; y:=-10+(runter-1)*30; y1:=-10+(runter)*30; y2:=21+(runter-1)*30; y3:=20+(runter)*30; Brush.color:=clblack; if runter=1 then else rectangle(x,y,x1,y2); Brush.color:=clmaroon; rectangle(x,y1,x1,y3); If Ftaste=ttdown then begin Brush.color:=clblack; y2:=y2+30; if runter=1 then else rectangle(x,y,x1,y2); Brush.color:=clmaroon; y1:=y1+30; y3:=y3+30; rectangle(x,y1,x1,y3); Ftaste:=ttnone; runter:=runter+1; end; end; end;
Delphi-Quellcode:
Am anfang der Unit hab ich auch daran gedacht
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState); begin if ((spielaktiv > 0) or (not(spielaktiv > 0) and (key <> 27))) then exit; case key of {Escape} VK_ESCAPE: close; {left} VK_LEFT : FTaste:=ttLeft; {up} VK_UP : FTaste:=ttTurn; {right} VK_RIGHT : FTaste:=ttRight; {bottom} VK_DOWN : FTaste:=ttDown; end; end;
Delphi-Quellcode:
und hab auch darab gedacht:
...
type TTaste = (ttNone,ttLeft,ttRight,ttDown,ttTurn); TForm1 = class(TForm) MainMenu1: TMainMenu; Hauptmenue: TMenuItem; Neu: TMenuItem; ...
Delphi-Quellcode:
aber der Stein geht dann einfach nicht schneller runter, bzw. geht einfach nicht einmal mehr runter
var
FTaste:Ttaste; ... hat da jemand einen Vorschlag, bitte? |
Re: Tastendruck abfrage
Das hier versteh ich überhaupt nicht:
Zitat:
|
Re: Tastendruck abfrage
Delphi-Quellcode:
Ich werd bald wahnsinnig...
if runter=1 then {nichts, da es in dem ersten durchlauf nichts zu löschen gibt} else rectangle(x,y,x1,y2); {löschen des voherigen Blockes, also der vorherigen Position}
Brush.color:=clmaroon; {ändern der Farbe} rectangle(x,y1,x1,y3);{neue Position} wenn diese doofe Tastenerkennung gehen würde wäre der rest schon viel einfacher |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz