AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Kleines Pferdespiel

Ein Thema von zapper54 · begonnen am 2. Jan 2010 · letzter Beitrag vom 18. Jan 2010
Antwort Antwort
Seite 1 von 3  1 23      
zapper54

Registriert seit: 14. Nov 2009
28 Beiträge
 
Delphi 7 Enterprise
 
#1

Kleines Pferdespiel

  Alt 2. Jan 2010, 14:54
Hallo!

ich soll für meine kleine Schwester ein Pferde-spiel programmieren. Es soll möglichst simpel sein, deswegen habe ich mir gedacht, dass ersteinmal nur von rechts Barikaden hereingefahren kommen, über die man springen muss. Nun habe ich aber das Problem, dass ich die Leertaste, mit der man springen soll, nicht ansteuern kann.
Wenn sie gedrückt ist, soll nur einmal die aktion passieren und dann soll erst wieder gewartet werden, bis mein image wieder auf der position ist, die ich haben will.
Das ganze möchte ich so gestalten, dass wenn die prozedur erfüllt ist (Leertaste gedrückt) ein Timer angehen soll, der dann bestimmt, wie lange mein Pferd in der Luft bleibt.
  Mit Zitat antworten Zitat
Benutzerbild von patti
patti

Registriert seit: 20. Okt 2004
Ort: Mittelfranken
665 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Kleines Pferdespiel

  Alt 2. Jan 2010, 15:00
Und was genau ist jetzt deine Frage?
Patrick Kreutzer
[Informatik-Student im 4. Semester]
http://www.patti-k.de/
  Mit Zitat antworten Zitat
zapper54

Registriert seit: 14. Nov 2009
28 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Kleines Pferdespiel

  Alt 2. Jan 2010, 15:02
Ich will die Leertaste ansprechen.

(Immer wenn die Leertaste gedrückt wird, wird eine Prozedur gestartet.)

Ich gebe zu, dass das da oben nicht sonderlich gut ausgedrückt war. Ich wollte euch nur einen Überblick geben...
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#4

Re: Kleines Pferdespiel

  Alt 2. Jan 2010, 15:03
Hi!

Ich werfe einfach mal die Begriffe Delphi-Referenz durchsuchenOnKeyDown bzw. Delphi-Referenz durchsuchenOnKeyPress in den Raum


Grüße, Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Kleines Pferdespiel

  Alt 2. Jan 2010, 15:04
Hallo,

es hat nichts direkt mit deiner Frage zu tun, aber es gibt hier ein Projekt namens Hier im Forum suchenAndorra und einige Tutorials dazu (in der Tutorialrubrik nach "Andorra" suchen). Das ist für 2D-SPiele hervoragend geeignet und dir wird viel Arbeit abgenommen. Evtl. wäre es einen Blick wert.

Grüße, Matze
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: Kleines Pferdespiel

  Alt 2. Jan 2010, 15:09
.. und Delphi-Referenz durchsuchenKeyPreview der Form auf true setzen.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von patti
patti

Registriert seit: 20. Okt 2004
Ort: Mittelfranken
665 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Kleines Pferdespiel

  Alt 2. Jan 2010, 15:10
Trotz rotem Kasten hier mal meine Antwort (weil ich mir sooo viel Mühe beim Schreiben gegeben habe ):

OK. Dafür sollte sich eigentlich das Ereignis OnKeyDown deines Formualrs eignen (Die Eigenschaft KeyPreview deiner Form sollte auf true stehen). Da kannst du dann per

if Key = VK_SPACE then TueWas; überprüfen, ob es sich bei der gedrückten Taste um die Leertaste handelt. Hier solltest du dann irgendeine Boolean-Variable auf true setzen, damit du dir merken kannst, ob das Pferd gerade springt, denn soweit ich weiß wird das OnKeyDown-Ereignis mehrere Male aufgerufen, wenn die Taste gedrückt bleibt. Zusätzlich musst du in dem KeyDown-Ereignis also auch noch überprüfen, ob das Pferd gerade nicht springt, also ob die Boolean-Variable false ist. Wenn dies der Fall ist, lässt du das Pferd halt springen. Nach dem Springen-Lassen setzt du die Variable wieder auf false, damit das Pferd erneut springen kann.

Zusammengefasst:

Delphi-Quellcode:
var SpringtGerade : Boolean;

//im OnCreate der Form

SpringtGerade := false;


// beim OnKeyDown:
if (Key = VK_SPACE) and not(SpringtGerade) then PferdSpingenLassen;


// in PferdSpingenLassen

SpringtGerade := true
// Code für das Springen-Lassen
SpringtGerade := false;
mfg

Edit: Ein weiteres Stichwort wäre evtl. noch GetAsyncKeyState.
Patrick Kreutzer
[Informatik-Student im 4. Semester]
http://www.patti-k.de/
  Mit Zitat antworten Zitat
zapper54

Registriert seit: 14. Nov 2009
28 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Kleines Pferdespiel

  Alt 3. Jan 2010, 22:00
Vielen Dank an euch alle!

Bei meiner Frage habt ihr mir echt gut geholfen. Jetzt habe ich aber ein weiteres Problem:

Mein Pferdchen ist ein Gif-Image, dass mit einem Timer auf und Abbewegt wird. Das Pferd bleibt dabei aber an der gleichen Stelle, es bewegen sich nur die Sprünge (einfache, rechteckige Images) auf das Pferd zu. Nun soll natürlich auch etwas passieren, wenn das Pferd mal gegen einen dieser Blöcke stößt. Egal ob von oben, von vorne oder von sonstwo. Daher meine Frage:

Gibt es eine Möglichkeit zu sagen, dass immer eine Aktion passiert, wenn das Pferde-Image ein Sprung-Image berührt, oder muss ich einen Haufen Koordinaten aufzählen???


Ich danke schonmal für eure Antworten.

Jetzt habe ich noch ein weiteres Problem: mein .gif (Pferd) hört beim 12. Sprung einfach auf, sich abzuspielen... gibt es da eine Möglichkeit, dass zu ändern??
  Mit Zitat antworten Zitat
zapper54

Registriert seit: 14. Nov 2009
28 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Kleines Pferdespiel

  Alt 3. Jan 2010, 22:56
Bitte überseht nicht meine Frage einen Post weiter oben, aber jetzt habe ich noch ein weiteres Problem. Wie oben beschrieben bewegt sich mein Pferd nicht selber, sondern die Hindernisse bewegen sich auf mein Pferd zu. Nun habe ich das Image des Rasens, auf dem alles steh nocheinmal eingefügt, und gesagt:

procedure TForm1.Timer22Timer(Sender: TObject); --> Der Timer hat natürlich das gleiche Interval, wie die Sprünge
begin
Image3.Left:=Image3.Left-10; --> Der gleiche Abstand, indem auch die Sprünge bewegt werden.
if image3.Left=-1025 then image3.Left:=1205; --> Das Image verlässt auf der einen Seite das Spielfeld, bis es komplett nicht mehr zu sehen
end; ist und soll dann wieder zu einer Startposition zurückkehren, ander es nahtlos an das andere Image
angehängt wird.


Was habe ich da falsch gemacht Die Images verschwinden einfach am linken Bildschirm.

Meine 2. Frage wäre:

Kann man irgendwie diese nervige scrollbar wegbekommen, die wenn ein sichtbares Stück ausserhalb des gezeigten Rahmens liegt angezeigt wird? Eines meiner 2 Grasstücke sitzt ja, wie oben erwähnt immer ausserhalb. Und Visible auf false zu stellen funktioniert nicht, da dann das Pferd immer über eine Weiße Fläche galloppiert. Kann man vielleicht nur Teile des Grases sichtbar machen? (Der Teil, der ausserhalb der Form ist ist unsichtbar, und nur der Teil, der innerhalb der Form ist ist sichtbar?)
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.464 Beiträge
 
Delphi 12 Athens
 
#10

Re: Kleines Pferdespiel

  Alt 4. Jan 2010, 10:17
Bitte benutze den Code-Tag, damit dein Quelltext lesbar bleibt.
Die Position -1025 wird wahrscheinlich nie genau erreicht, da sich das Image in 10er-Schritten bewegt.

Delphi-Quellcode:
procedure TForm1.Timer22Timer(Sender: TObject); --> Der Timer hat natürlich das gleiche Interval, wie die Sprünge
begin
  // --> Der gleiche Abstand, indem auch die Sprünge bewegt werden.
  Image3.Left := Image3.Left - 10;
  // --> Das Image verlässt auf der einen Seite das Spielfeld, bis es komplett nicht mehr zu sehen ist
  // ist und soll dann wieder zu einer Startposition zurückkehren,
  // an der es nahtlos an das andere Image angehängt wird.
  if Image3.Left <= -Image3.Width then
    Image3.Left := 1205;
end;
Scrollbars lassen sich in den Optionen des Formulars abschalten.
Eine andere Möglichkeit wäre, ein Panel auf das Formular zu legen und alle Images darauf.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 23:17 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz