AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Suche Hilfe bei Bewegung einer Form
Thema durchsuchen
Ansicht
Themen-Optionen

Suche Hilfe bei Bewegung einer Form

Ein Thema von abi9 · begonnen am 19. Jun 2013 · letzter Beitrag vom 21. Jun 2013
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.658 Beiträge
 
Delphi 12 Athens
 
#1

AW: Suche Hilfe bei Bewegung einer Form

  Alt 19. Jun 2013, 15:16
Wie sehen denn die verwendeten Klassen (THintergund etc.) aus? Und gewöhn Dir lieber gar nicht erst an, mit true oder false zu vergleichen, das kann zu falschen Ergebnissen führen.
Die OnKeyDown-Methode würde ich etwas anders schreiben:
Delphi-Quellcode:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  case Key of
    VK_LEFT:
      Links := True;
    VK_Right:
      Rechts := True;
    VK_Up:
      Hoch := True;
    VK_Down
      Runter := True;
  end;
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
abi9

Registriert seit: 19. Jun 2013
20 Beiträge
 
#2

AW: Suche Hilfe bei Bewegung einer Form

  Alt 19. Jun 2013, 15:19
Wie sehen denn die verwendeten Klassen (THintergund etc.) aus? Und gewöhn Dir lieber gar nicht erst an, mit true oder false zu vergleichen, das kann zu falschen Ergebnissen führen.
Die OnKeyDown-Methode würde ich etwas anders schreiben:
Delphi-Quellcode:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  case Key of
    VK_LEFT:
      Links := True;
    VK_Right:
      Rechts := True;
    VK_Up:
      Hoch := True;
    VK_Down
      Runter := True;
  end;
end;
Hat immer noch nicht geklappt (
Aber so wie es aussieht ist das doch nur eine Vereinfachung von dem, was ich geschrieben habe..
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.658 Beiträge
 
Delphi 12 Athens
 
#3

AW: Suche Hilfe bei Bewegung einer Form

  Alt 19. Jun 2013, 15:20
Ist es, Du hast uns aber immer noch nicht die Klassen gezeigt.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.197 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Suche Hilfe bei Bewegung einer Form

  Alt 19. Jun 2013, 15:21
Probier es mal mit anderen Tasten, beispielsweise dem Nummernblock oder noch besser Buchstaben. Ich meine Dinge wie die Pfeiltasten sind Sonderfälle, die werden so garnicht normal an die Form durchgereicht.
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#5

AW: Suche Hilfe bei Bewegung einer Form

  Alt 19. Jun 2013, 15:35
@DeddyH
Wie sehen denn die verwendeten Klassen (THintergund etc.) aus? Und gewöhn Dir lieber gar nicht erst an, mit true oder false zu vergleichen, das kann zu falschen Ergebnissen führen.
Die OnKeyDown-Methode würde ich etwas anders schreiben:
Delphi-Quellcode:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  case Key of
    VK_LEFT:
      Links := True;
    VK_Right:
      Rechts := True;
    VK_Up:
      Hoch := True;
    VK_Down
      Runter := True;
  end;
end;
Dein verkürzter Quelltext ist zwar syntaktisch korrekt und sicherlich "besser" als das Original: Aber er enthält weiterhin den gleichen Fehler: Ist Links einmal True, bleibt Links = True (dito für die drei anderen Variabeln).
Delphi-Quellcode:
procedure TForm1.TiGameEngineTimer (Sender: TObject);
   begin
     IF (Links = True) and (Kopf.GetZXPosition > 0) Then
       begin
         Kopf.bewege_links();
       end;
 ...
Ist der Kopf einmal links, bleibt er immer links.
Mir erscheint eine derartige Lösung sinnvoller:
Delphi-Quellcode:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  Links := Key = VK_LEFT;
  Rechts := Key = VK_Right;
  Hoch := Key = VK_Up;
  Runter := Key = VK_Down;
end;
Key kann hier die Werte 37 bis 40 enthalten, die problemlos beim Form ankommen, diesbezügliche Befürchtungen sind unbegründet.
Mit
Delphi-Quellcode:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  ShowMessage(IntToStr(key));
end;
schön überprüfbar (zumindest bei Delphi 7). Im Debugger wird's nicht anders aussehen.
  Mit Zitat antworten Zitat
abi9

Registriert seit: 19. Jun 2013
20 Beiträge
 
#6

AW: Suche Hilfe bei Bewegung einer Form

  Alt 19. Jun 2013, 15:40
@DeddyH
[/DELPHI]
Dein verkürzter Quelltext ist zwar syntaktisch korrekt und sicherlich "besser" als das Original: Aber er enthält weiterhin den gleichen Fehler: Ist Links einmal True, bleibt Links = True (dito für die drei anderen Variabeln).
Delphi-Quellcode:
procedure TForm1.TiGameEngineTimer (Sender: TObject);
   begin
     IF (Links = True) and (Kopf.GetZXPosition > 0) Then
       begin
         Kopf.bewege_links();
       end;
 ...
Ist der Kopf einmal links, bleibt er immer links.
[/QUOTE]

Bei Snake soll die Schlange doch auch durchgehend in diese Richtung verlaufen
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#7

AW: Suche Hilfe bei Bewegung einer Form

  Alt 19. Jun 2013, 15:45
Bei Snake soll die Schlange doch auch durchgehend in diese Richtung verlaufen
Auch wenn die Taste VK_Down gedrückt wurde?
Auch wenn die Taste VK_Right gedrückt wurde?

Wenn also einmal links gedrückt wurde, läuft die Schlange nach links.
Wird nun rechts gedrückt, läuft die Schlange nach rechts.
Da in der Abfrage geprüft wird, ob links gedrückt wurde, geht's nach links und dann wird nach rechts geprüft und die Schlange geht nach rechts und damit bleibt sie immer wo sie ist. Analog für oben und unten. Und das scheint doch momentan das Problem zu sein?

Geändert von nahpets (19. Jun 2013 um 16:13 Uhr) Grund: Noch ein bisserl den Text ergänzt und Schreibfehler :-(
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Suche Hilfe bei Bewegung einer Form

  Alt 19. Jun 2013, 15:46
@nahpets : gugg dir auch die OnKeyUp an, dort wird's wieder auf False gesetzt.
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.658 Beiträge
 
Delphi 12 Athens
 
#9

AW: Suche Hilfe bei Bewegung einer Form

  Alt 19. Jun 2013, 15:57
Ich habe jetzt nur kurz in 2 der Dateien hineingeschaut. Im Konstruktor fehlt mir jeweils der inherited-Aufruf, Destruktoren fehlen ganz, obwohl hier die privaten Objekte, die im Konstruktor angelegt werden, freigegeben werden sollten. Und wieso sind alle Methoden virtuell, obwohl es keine Ableitungen gibt? Gut, das ist nicht weiter schlimm, aber virtuell nur einfach so sieht auch komisch aus.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
abi9

Registriert seit: 19. Jun 2013
20 Beiträge
 
#10

AW: Suche Hilfe bei Bewegung einer Form

  Alt 19. Jun 2013, 15:59
Ich habe jetzt nur kurz in 2 der Dateien hineingeschaut. Im Konstruktor fehlt mir jeweils der inherited-Aufruf, Destruktoren fehlen ganz, obwohl hier die privaten Objekte, die im Konstruktor angelegt werden, freigegeben werden sollten. Und wieso sind alle Methoden virtuell, obwohl es keine Ableitungen gibt? Gut, das ist nicht weiter schlimm, aber virtuell nur einfach so sieht auch komisch aus.
Das heißt jetzt??
Sorry, aber bin noch ein Anfänger²
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 17:50 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