Autor |
Beitrag |
EMP_Rockhand
Hält's aus hier
Beiträge: 9
|
Verfasst: Sa 21.02.15 11:45
Hallo liebes Forum,
ich habe ein Problem. Ich versuche für den Informatik Unterricht ein kleines Spiel zu programmieren, bei dem eine Figur im Fenster nach links und rechts läuft und dabei Münzen auffängt, die vom oberen Bildschirmrand fallengelassen werden. Wie kann ich es also realisieren, dass ich das gleiche Image automatisch von verschiedenen Positionen am oberen Fensterrand fallen lassen kann?
Vielen Dank schon mal
|
|
Xion
Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Sa 21.02.15 14:46
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
Für diesen Beitrag haben gedankt: EMP_Rockhand
|
|
EMP_Rockhand
Hält's aus hier
Beiträge: 9
|
Verfasst: Sa 21.02.15 15:52
vielen Dank! das hat mir sehr geholfen!!
|
|
Perlsau
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 22.02.15 15:40
Crosspost nennt man das, was du hier machst: Zeitgleich in zwei oder mehreren Foren dieselbe Frage stellen. Um nicht unnötig das Hirn von Leuten zu zermartern, ist es üblich, auf Crossposts hinzuweisen und diese zu verlinken, so wie ich das hier für dich erledige.
|
|
EMP_Rockhand
Hält's aus hier
Beiträge: 9
|
Verfasst: So 22.02.15 19:04
Eine Frage noch: gibt es eine Möglichkeit meine Figur mit durchgängigem Tastendruck zu bewegen, sodass ich nicht immer so oft nach links oder rechts drücken muss?
|
|
Jann1k
Beiträge: 866
Erhaltene Danke: 43
Win 7
TurboDelphi, Visual Studio 2010
|
Verfasst: So 22.02.15 19:31
Ja, da gibt es mehrere.
Ich denke mal im Moment bewegst du deine Figur im OnkeyDown-Event deines Formulars. Dieses Event wird genau einmal ausgeführt (und zwar beim tastendruck). Wenn du stattdessen das OnKeyPress-Event verwendest, wird das Event solange ausgeführt, wie die Taste gedrückt bleibt.
Alternativ könntest du auch einen Timer verwenden (der periodisch ein Event ausführt). Suche dazu einfach mal ein weneig im Forum, hier gibts viele Threads dazu.
|
|
EMP_Rockhand
Hält's aus hier
Beiträge: 9
|
Verfasst: So 22.02.15 19:51
wenn ich die variante mit dem OnKEyPress verwende, bekomme ich in der Prozedur :
Delphi-Quelltext 1: 2: 3: 4: 5:
| procedure TForm1.dp1(Sender: TObject; var Key: Char); begin if Key=VK_LEFT then Image1.Left:=Image1.Left-15; if Key=VK_RIGHT then Image1.Left:=Image1.Left+15; end; |
die Fehlermeldung : Inkompatible Typen.
Wie ist das zu beheben?
Moderiert von Narses: Delphi-Tags hinzugefügt
|
|
EMP_Rockhand
Hält's aus hier
Beiträge: 9
|
Verfasst: So 22.02.15 20:12
mir ist eingefallen, dass OnKeyPress im Gegensatz zu OnKeyUp und OnKeyDown den ASCII braucht. .. aber was sind die ASCII-Codes für Pfeiltasten?
|
|
Stundenplan
Beiträge: 128
Erhaltene Danke: 32
Win 7
Delphi 7 Pers., C# (VS 2010 Express)
|
Verfasst: So 22.02.15 21:40
Wüsste nicht, dass es die gäbe...
Das ist mit KeyPress nicht wirklich zu lösen, da wären OnKeyDown/Up schon geschickter, die liefern die VK-Codes als Parameter... Da diese Events aber rausfallen, bleibt bloß noch der Griff zu nem Timer, der in kurzen Abständen überprüft, ob GetAsyncKeystate(VK_...) < 0 ergibt, z.B.:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| procedure TFormXX.TimerXTimer(Sender: TObject); begin if GetAsyncKeystate(VK_LEFT) < 0 then else if GetAsyncKeystate(VK_RIGHT) < 0 then end; |
|
|
EMP_Rockhand
Hält's aus hier
Beiträge: 9
|
Verfasst: Mo 23.02.15 06:44
|
|