| Autor | Beitrag | 
| EMP_Rockhand Hält's aus hier
 Beiträge: 9
 
 
 
 
 | 
Verfasst: Sa 21.02.15 10: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 13: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 14:52 
 
vielen Dank! das hat mir sehr geholfen!! | 
|  | 
| Perlsau Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: So 22.02.15 14: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 18: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 18: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 18: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 19: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 20: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 05:44 
 | 
|  |