Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   "Tastatur abfragen?" sehr gut gelöst-> hier ne Exe-Datei (https://www.delphipraxis.net/73314-tastatur-abfragen-sehr-gut-geloest-hier-ne-exe-datei.html)

dino 15. Jul 2006 15:35


"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?

EDatabaseError 15. Jul 2006 15:36

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.

3_of_8 15. Jul 2006 15:39

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.

dino 15. Jul 2006 15:49

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

3_of_8 15. Jul 2006 15:54

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;

dino 15. Jul 2006 15:55

Re: Was gibts für Möglichkeiten die Tastatur abzufragen?
 
was passiert da genau?

3_of_8 15. Jul 2006 15:57

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].

dino 15. Jul 2006 16:12

Re: Was gibts für Möglichkeiten die Tastatur abzufragen?
 
klappt noch nicht

dino 15. Jul 2006 16:13

Re: Was gibts für Möglichkeiten die Tastatur abzufragen?
 
Delphi-Quellcode:
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.
[edit=Christian Seehase]Delphi-Tags gesetzt. Bitte künftig selber machen. Danke. Mfg, Christian Seehase[/edit]

3_of_8 15. Jul 2006 16:28

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.

dino 15. Jul 2006 16:41

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

3_of_8 15. Jul 2006 16:45

Re: Was gibts für Möglichkeiten die Tastatur abzufragen?
 
Kein Wunder, dass das nicht geht. Es muss auch -1 heißen, nicht 1.

dino 15. Jul 2006 16:47

Re: Was gibts für Möglichkeiten die Tastatur abzufragen?
 
da stand aber irendwas von inkompatible typen

3_of_8 15. Jul 2006 16:50

Re: Was gibts für Möglichkeiten die Tastatur abzufragen?
 
Delphi-Quellcode:
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.
So gehts.

dino 15. Jul 2006 16:56

Re: Was gibts für Möglichkeiten die Tastatur abzufragen?
 
hab jetzt

Delphi-Quellcode:
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;
aber wenn ich ein Knopf Gedrückt halte und dann einen weiteren Knopf Drücke klappt nichts mehr wie es soll

[edit=Christian Seehase]Delphi-Tags gesetzt. Bitte künftig selber machen. Danke. Mfg, Christian Seehase[/edit]

3_of_8 15. Jul 2006 16:58

Re: Was gibts für Möglichkeiten die Tastatur abzufragen?
 
Nimm halt meinen Code von oben.

dino 15. Jul 2006 17:02

Re: Was gibts für Möglichkeiten die Tastatur abzufragen?
 
klappt noch nicht

dino 15. Jul 2006 17:07

Re: Was gibts für Möglichkeiten die Tastatur abzufragen?
 
Delphi-Quellcode:
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.
so ists doch richtig oder?

3_of_8 15. Jul 2006 17:08

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...

dino 15. Jul 2006 17:10

Re: Was gibts für Möglichkeiten die Tastatur abzufragen?
 
das Programm äuft, nur wirds nicht rot :(

3_of_8 15. Jul 2006 17:12

Re: Was gibts für Möglichkeiten die Tastatur abzufragen?
 
:roll:

Lass dir die Werte per showmessage ausgeben, um herauszufinden, warum.

dino 15. Jul 2006 17:13

Re: Was gibts für Möglichkeiten die Tastatur abzufragen?
 
Delphi-Quellcode:
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.
Es klappt mit einer Taste

dino 15. Jul 2006 17:14

Re: Was gibts für Möglichkeiten die Tastatur abzufragen?
 
Perfeckt Danke Danke

3_of_8 15. Jul 2006 17:15

Re: Was gibts für Möglichkeiten die Tastatur abzufragen?
 
?

Wasn jetzt los?

dino 15. Jul 2006 17:16

Re: Was gibts für Möglichkeiten die Tastatur abzufragen?
 
weiss zwar nicht waqrum aber mit =0 und =false klappts

dino 15. Jul 2006 17:18

Re: Was gibts für Möglichkeiten die Tastatur abzufragen?
 
hab =low(SmallInt) durch =0 ersetzt und =false eingefügt jetzt klappts!

3_of_8 15. Jul 2006 17:20

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.

dino 15. Jul 2006 17:21

Re: Was gibts für Möglichkeiten die Tastatur abzufragen?
 
hab 1!

dino 15. Jul 2006 17:31

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)

dino 15. Jul 2006 17:33

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

3_of_8 15. Jul 2006 17:38

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.

dino 15. Jul 2006 17:48

Re: "Tastatur abfragen?" sehr gut gelöst-> hier
 
On klick

3_of_8 15. Jul 2006 17:52

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.

dino 15. Jul 2006 18:09

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