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
 
Bambennos

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

AW: zu bestimmten Ereignissen Tasten ignorieren

  Alt 9. Apr 2011, 14:59
Vorweg: Ich arbeite an einem 2D Spiel und verwende Andorra 2D...

Delphi-Quellcode:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if Key = #27 then Close;
if (Key = 'a') and (Spieler.IsIdle) then
                                      begin
                                      Spieler.FDistance := 40;
                                      Spieler.RRichtung := Links;
                                      Spieler.IsMoving := true;
                                      end;
if (Key = 'w') and (Spieler.IsIdle) then
                                      begin
                                      Spieler.FDistance := 40;
                                      Spieler.RRichtung := Hoch;
                                      Spieler.IsMoving := true;
                                      end;
if (Key = 'd') and (Spieler.IsIdle) then
                                       begin
                                       Spieler.FDistance := 40;
                                       Spieler.RRichtung := Rechts;
                                       Spieler.IsMoving := true;
                                       end;
if (Key = 's') and (Spieler.IsIdle) then
                                        begin
                                        Spieler.FDistance := 40;
                                        Spieler.RRichtung := Runter;
                                        Spieler.IsMoving := true;
                                        end;


end;
Dann soll er bei jedem Frame berechnen:
Delphi-Quellcode:
if Spieler.IsMoving then
    begin
     Spieler.Schritt();
    end;
und dann:

Delphi-Quellcode:
procedure TSpieler.Schritt();
begin
FDistance := FDistance - FSpeed * Performance.Timegap / 1000;
  case RRichtung of
      Links:begin
      FXpos := FXpos - FSpeed * Performance.Timegap / 1000;
      FXPosTile := FXPosTile - (FSpeed/48) * Performance.Timegap / 1000;
      end;
      Rechts:begin
      FXpos := FXpos + FSpeed * Performance.Timegap / 1000;
      FXPosTile := FXPosTile + (FSpeed/48) * Performance.TimeGap / 1000;
      end;
      Hoch:begin
      FYpos := FYpos - FSpeed * Performance.Timegap / 1000;
      FYPosTile := FYPosTile - (FSpeed/48) * Performance.TimeGap / 1000;
      end;
      Runter: begin
      FYpos := FYpos + FSpeed * Performance.Timegap / 1000;
      FYPosTile := FYPosTile + (FSpeed/48) * Performance.TimeGap / 1000;
      end;
    end;
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;
end;
*Edit


Delphi-Quellcode:
    // Wenn er aus der Karte herausgeht, dann
    if Spieler.FXposTile >= 26 then //rechts
    begin
    Spieler.FXposTile := 0;
    MapTeilX := MapTeilX + 1;
    Map.Start;
    end;

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

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

    if Spieler.FYposTile < 0 then //oben
    begin
    Spieler.FYposTile := 19;
    MapTeilY := MapTeilY - 1;
    Map.Start;
    end;

Geändert von Bambennos ( 9. Apr 2011 um 15:05 Uhr) Grund: Habe die überprüfung des Verlassens vergessen *_*
  Mit Zitat antworten Zitat
 


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 14:02 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