AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein zu bestimmten Ereignissen Tasten ignorieren
Thema durchsuchen
Ansicht
Themen-Optionen

zu bestimmten Ereignissen Tasten ignorieren

Ein Thema von Bambennos · begonnen am 9. Apr 2011 · letzter Beitrag vom 9. Apr 2011
Antwort Antwort
Bambennos

Registriert seit: 18. Feb 2011
6 Beiträge
 
#1

AW: zu bestimmten Ereignissen Tasten ignorieren

  Alt 9. Apr 2011, 16:09
Delphi-Quellcode:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
  if Key = #27 then
    Close
  else if (Key in ['a','w','s','d']) and (Spieler.IsIdle) and not (Spieler.MapVerlassen) then
    begin
      Spieler.FDistance := 40;
      Spieler.IsMoving := true;
      case Key of
        'a': Spieler.RRichtung := Links;
        'w': Spieler.RRichtung := Hoch;
        'd': Spieler.RRichtung := Rechts;
        's': Spieler.RRichtung := Runter;
      end;
      Application.ProcessMessages;
    end
    else
    begin
      Spieler.Spielerzeichnen;
      Spieler.MapVerlassen := false;
    end;
end;

So funktionierts nicht... Er läuft trotzdem immer weiter :/
  Mit Zitat antworten Zitat
alfold

Registriert seit: 29. Jun 2010
Ort: Neustrelitz
393 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: zu bestimmten Ereignissen Tasten ignorieren

  Alt 9. Apr 2011, 16:14
Und wo setzt Du Spieler.MapVerlassen?
  Mit Zitat antworten Zitat
Bambennos

Registriert seit: 18. Feb 2011
6 Beiträge
 
#3

AW: zu bestimmten Ereignissen Tasten ignorieren

  Alt 9. Apr 2011, 16:17
Delphi-Quellcode:
   // Wenn er aus der Karte herausgeht, dann
    if Spieler.FXposTile >= 26 then //rechts
    begin
    Spieler.MapVerlassen := true;
    Spieler.FXposTile := 0;
    MapTeilX := MapTeilX + 1;
    Map.Start;
    end;

    if Spieler.FYposTile > 20 then //unten
    begin
    Spieler.MapVerlassen := true;
    Spieler.FYposTile := 0;
    MapTeilY := MapTeilY +1;
    Map.Start;
    end;

    if Spieler.FXposTile < 0 then //links
    begin
    Spieler.MapVerlassen := true;
    Spieler.FXposTile := 25;
    MapTeilX := MapTeilX - 1;
    Map.Start;
    end;

    if Spieler.FYposTile < 0 then //oben
    begin
    Spieler.MapVerlassen := true;
    Spieler.FYposTile := 19;
    MapTeilY := MapTeilY - 1;
    Map.Start;
    end;
  Mit Zitat antworten Zitat
alfold

Registriert seit: 29. Jun 2010
Ort: Neustrelitz
393 Beiträge
 
Delphi 7 Enterprise
 
#4

AW: zu bestimmten Ereignissen Tasten ignorieren

  Alt 9. Apr 2011, 21:06
Kann es sein Das Du da zweimal den key abfragst wenn er gedrückt ist?

Delphi-Quellcode:
....
if FDistance <= 0 then
  begin
  if ((RRichtung = Links) and (GetAsyncKeyState(65) <> 0) or // A //<----
     (RRichtung = Rechts) and (GetAsyncKeyState(68)<> 0 ) or // D
     (RRichtung = Hoch) and (GetAsyncKeyState(87)<> 0) or // W
     (RRichtung = Runter) and (GetAsyncKeyState(83)<> 0)) then // S
     begin
       FDistance := 5;
       end
  else
    FMoving := false;
  end;
Gruss alfold
  Mit Zitat antworten Zitat
Bambennos

Registriert seit: 18. Feb 2011
6 Beiträge
 
#5

AW: zu bestimmten Ereignissen Tasten ignorieren

  Alt 9. Apr 2011, 21:16
Da soll Delphi schauen, ob ich die Taste gedrückt halte - wenn ja, dann soll er die Distanz wieder auf 5 setzen.

*edit:

DANKE
Dank dir hab ich meinen Fehler erkannt :}
kann geclosed werden *.*

Geändert von Bambennos ( 9. Apr 2011 um 21:20 Uhr) Grund: Fehler erkannt :D
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:12 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