![]() |
"Tastatur abfragen?" sehr gut gelöst-> hier ne
Wenns get bitte in Echtzeit, denn ich habe vor eine Mario Version eines coolen GameBoy spiels zu Programmieren, und da ists ärgerlich, wenn man zwar Drücken würde, das Programm aber nicht reagiert...
ach und zu was gehört eientlich Delphi3? |
Re: Was gibts für Möglichkeiten die Tastatur abzufragen?
erstmal Hallo in der DP!
bitte formulier dich ein bisschen genauerer...und benutze die Forensuche. Schau dir mal OnKeyDown und OnKeyPress an. |
Re: Was gibts für Möglichkeiten die Tastatur abzufragen?
Delphi 3 ist Win32.
Ich weiß nicht, wie viel Erfahrung du schon mit Delphi hast, wenn du viel Erfahrung hast, dürfte GetAsyncKeyState oder DelphiX interessant für dich sein, ansonsten OnKeyDown. |
Re: Was gibts für Möglichkeiten die Tastatur abzufragen?
beachte, dass bei so einem Spiel auch mal ein Knopf immer wieder mal Gedrückt wird, während ein anderer Knopf gedrückt bleibt
geht das? STRG Umschalt und das alles ist aber unwichtig |
Re: Was gibts für Möglichkeiten die Tastatur abzufragen?
Dann wäre ein array[0..127] of Boolean nützlich, das du in etwa so füllst:
Delphi-Quellcode:
var I: Integer;
keys: array[0..127] of Boolean; //... for I:=0 to high(keys) do keys[I]:=GetAsyncKeyState(I)=-1; |
Re: Was gibts für Möglichkeiten die Tastatur abzufragen?
was passiert da genau?
|
Re: Was gibts für Möglichkeiten die Tastatur abzufragen?
Es wird für sämtliche relevanten Tasten abgefragt, ob sie gedrückt sind oder nicht.
Wenn du jetzt abfragen willst, ob die Taste W gedrückt ist, steht das in keys[Ord('W')]. Wenn du abfragen willst, ob die Pfeiltaste unten gedrückt ist, machst du keys[VK_DOWN]. |
Re: Was gibts für Möglichkeiten die Tastatur abzufragen?
klappt noch nicht
|
Re: Was gibts für Möglichkeiten die Tastatur abzufragen?
Delphi-Quellcode:
[edit=Christian Seehase]Delphi-Tags gesetzt. Bitte künftig selber machen. Danke. Mfg, Christian Seehase[/edit]
implementation
{$R *.DFM} var i:Integer; keys:array[0..127] of Boolean; procedure TForm1.Button1Click(Sender: TObject); begin close; end; procedure TForm1.FormActivate(Sender: TObject); begin if timer1.enabled = false then begin form1.width:=screen.width; form1.height:=screen.height; form1.position:=poscreencenter; timer1.enabled:=true; end; end; procedure TForm1.Timer1Timer(Sender: TObject); begin for i:=0 to high(keys) do keys[i]:=GetAsyncKeyState(i)=-1; if keys[VK_DOWN]=1 then form1.canvas.Pixels[100,100]:=clred; end; end. |
Re: Was gibts für Möglichkeiten die Tastatur abzufragen?
Tausche mal das Pixels-Zeugs aus gegen showmessage('blubb'), vielleicht gehts dann.
Denn die Form refresht ständig, dann siehst du den roten Pixel nicht mehr. |
Re: Was gibts für Möglichkeiten die Tastatur abzufragen?
nein das canvas.pixels ist ne Angewohnheit, da hatte ich noch nie Probleme mit, und ausserdem refresht die nicht ständig, jedenfall hab ichs mit OnKeyPress ganz gut raus, nur wie kann ich abfragen ob key='a' ist denn so klappts eben nicht
|
Re: Was gibts für Möglichkeiten die Tastatur abzufragen?
Kein Wunder, dass das nicht geht. Es muss auch -1 heißen, nicht 1.
|
Re: Was gibts für Möglichkeiten die Tastatur abzufragen?
da stand aber irendwas von inkompatible typen
|
Re: Was gibts für Möglichkeiten die Tastatur abzufragen?
Delphi-Quellcode:
So gehts.
implementation
{$R *.DFM} var i:Integer; keys:array[0..127] of Boolean; procedure TForm1.Button1Click(Sender: TObject); begin close; end; procedure TForm1.FormActivate(Sender: TObject); begin if timer1.enabled = false then begin form1.width:=screen.width; form1.height:=screen.height; form1.position:=poscreencenter; timer1.enabled:=true; end; end; procedure TForm1.Timer1Timer(Sender: TObject); begin for i:=0 to high(keys) do keys[i]:=GetAsyncKeyState(i)=low(SmallInt); if keys[VK_DOWN] then form1.canvas.Pixels[100,100]:=clred; end; end. |
Re: Was gibts für Möglichkeiten die Tastatur abzufragen?
hab jetzt
Delphi-Quellcode:
aber wenn ich ein Knopf Gedrückt halte und dann einen weiteren Knopf Drücke klappt nichts mehr wie es soll
var
Form1: TForm1; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); begin close; end; procedure TForm1.FormClick(Sender: TObject); begin if timer1.enabled = false then begin form1.width:=screen.width; form1.height:=screen.height; form1.position:=poscreencenter; timer1.enabled:=true; end else close; end; procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if key = Ord('A') then form1.canvas.pixels[100,100]:=clred; if key = Ord('S') then form1.canvas.pixels[200,100]:=clred; end; procedure TForm1.Timer1Timer(Sender: TObject); begin form1.canvas.pixels[100,100]:=clBtnFace; form1.canvas.pixels[200,100]:=clBtnFace; end; [edit=Christian Seehase]Delphi-Tags gesetzt. Bitte künftig selber machen. Danke. Mfg, Christian Seehase[/edit] |
Re: Was gibts für Möglichkeiten die Tastatur abzufragen?
Nimm halt meinen Code von oben.
|
Re: Was gibts für Möglichkeiten die Tastatur abzufragen?
klappt noch nicht
|
Re: Was gibts für Möglichkeiten die Tastatur abzufragen?
Delphi-Quellcode:
so ists doch richtig oder?
var i:Integer;
keys:array[0..127] of Boolean; procedure TForm1.FormClick(Sender: TObject); begin if timer1.enabled = false then begin form1.width:=screen.width; form1.height:=screen.height; form1.position:=poscreencenter; timer1.enabled:=true; end else close; end; procedure TForm1.Timer1Timer(Sender: TObject); begin for i:=0 to high(keys) do keys[i]:=GetAsyncKeyState(i)=low(SmallInt); if keys[VK_Down] then form1.canvas.Pixels[100,100]:=clred; end; end. |
Re: Was gibts für Möglichkeiten die Tastatur abzufragen?
Bei mir schon, seltsam. Was genau funkioniert denn nicht? Mach mal bissel debugging, lass dir Wert per showmessage ausgeben usw...
|
Re: Was gibts für Möglichkeiten die Tastatur abzufragen?
das Programm äuft, nur wirds nicht rot :(
|
Re: Was gibts für Möglichkeiten die Tastatur abzufragen?
:roll:
Lass dir die Werte per showmessage ausgeben, um herauszufinden, warum. |
Re: Was gibts für Möglichkeiten die Tastatur abzufragen?
Delphi-Quellcode:
Es klappt mit einer Taste
var i:Integer;
keys:array[0..127] of Boolean; procedure TForm1.FormClick(Sender: TObject); begin if timer1.enabled = false then begin form1.width:=screen.width; form1.height:=screen.height; form1.position:=poscreencenter; timer1.enabled:=true; end else close; end; procedure TForm1.Timer1Timer(Sender: TObject); begin for i:=0 to high(keys) do keys[i]:=GetAsyncKeyState(i)=0; if keys[VK_Down]=false then form1.canvas.pixels[100,100]:=clred else form1.canvas.pixels[100,100]:=clBtnFace end; end. |
Re: Was gibts für Möglichkeiten die Tastatur abzufragen?
Perfeckt Danke Danke
|
Re: Was gibts für Möglichkeiten die Tastatur abzufragen?
?
Wasn jetzt los? |
Re: Was gibts für Möglichkeiten die Tastatur abzufragen?
weiss zwar nicht waqrum aber mit =0 und =false klappts
|
Re: Was gibts für Möglichkeiten die Tastatur abzufragen?
hab =low(SmallInt) durch =0 ersetzt und =false eingefügt jetzt klappts!
|
Re: Was gibts für Möglichkeiten die Tastatur abzufragen?
Was hast du als Timer Interval? Ich würde 1 einstellen. Ansonsten kannst du machen GetAsyncKeyState(I)<0.
|
Re: Was gibts für Möglichkeiten die Tastatur abzufragen?
hab 1!
|
Re: Was gibts für Möglichkeiten die Tastatur abzufragen?
Liste der Anhänge anzeigen (Anzahl: 1)
als Zeichen meiner Dankbarkeit:
Dies ist mein Professionelles AmeisenSimulationsprogramm! für Freaks ganz lustig sich das mal ne stunde oder so anzuschauen :) (für 1600 * 1200 Bildschirmauflösung geschrieben) |
Re: Was gibts für Möglichkeiten die Tastatur abzufragen?
hab aus einfachheit das =false einfach statt da wos jetzt ist ans =0 gesetzt und klappt genauso
|
Re: "Tastatur abfragen?" sehr gut gelöst-> hier
1. Erstelle halt nen neuen Thread dafür unter Freeware bzw. OpenSource, danke.
2. Vllt sollte man erwähnen, dass das Spiel mit rechter Maustaste startet. |
Re: "Tastatur abfragen?" sehr gut gelöst-> hier
On klick
|
Re: "Tastatur abfragen?" sehr gut gelöst-> hier
Aso.
Aber warum das? Mach nen Button rein. Und mir gefällt es gar nicht, dass das Spiel geschlossen wird, wenn man nochmal klickt. |
Re: "Tastatur abfragen?" sehr gut gelöst-> hier
ich mags genau so wie es ist...
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:14 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-2025 by Thomas Breitkreuz