Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Brauche HILFE beim PingPong-Spiel!!!! (https://www.delphipraxis.net/60400-brauche-hilfe-beim-pingpong-spiel.html)

sakura 8. Jan 2006 14:32

Re: Brauche HILFE beim PingPong-Spiel!!!!
 
Zitat:

Zitat von Nils_13
inc ist aber besser und übersichtlicher.

Ersteres stimmt seit Delphi 6 nicht mehr, beide nehmen sich nichts. Letzters gilt gerade für Anfänger nicht.

...:cat:...

P.S.: Überdenke bitte Deinen Ton (vorletzter Deiner Beiträge in diesem Thread!)

Nils_13 8. Jan 2006 14:39

Re: Brauche HILFE beim PingPong-Spiel!!!!
 
inc(i); dec(i);

hält den Code aber kleiner. Und außerdem ist inc oder dec doch ein einfacher Befehl. Wenn man es schafft viele andere zu lernen, ist das meiner Meinung kein großes Problem.

flomei 8. Jan 2006 14:40

Re: Brauche HILFE beim PingPong-Spiel!!!!
 
Wird, wie von sakura schon gesagt, wohl durch Compiler Magic und ähnliches aufs absolut Gleiche rauskommen im Kompilat (?)...

MfG Florian :hi:

arbu man 8. Jan 2006 14:59

Re: Brauche HILFE beim PingPong-Spiel!!!!
 
Zitat:

frage zum ball: kann man den auch rund machen?
TShape als Ball nehmen und Style auf stCircle setzen.

Nils_13 8. Jan 2006 15:01

Re: Brauche HILFE beim PingPong-Spiel!!!!
 
Ja das ist schon klar, aber es ist gut für lange Codes, sonst verliert man ja noch mehr die Übersicht.

Nun zum Thema:
Was hast du jetzt schon alles ?

- Einen Schläger
- Ein Spielfeld
- Eine Kollisionserkennung (Hast du da schon eine Tolleranz eingebaut ?)

Dir fehlt:
- Ein Ball

Ich hoffe ich habe alles zusammen.

Hier der Ball:
- Setze ein Shape auf die Form
- Gehe in den Objektsinspector und stelle dort unter Shape stCircle ein
- Die Farben die du brauchst kannst du dir dann unter Pen (Rahmen) und Brush (Füllung) jeweils bei Color einstellen.
- Vielleicht noch die größe anpassen und fertig.

Hast du bei der Kollisionserkennung schon eine Tolleranz (Tolleranz = Je nachdem wie der Ball aufschlägt prallt er auch wieder ab) ?

So nun stellst du bei der Form noch KeyPreview auf True und setzt im OnKeyDown-Ereigniss (auch unter Form zu finden) folgenden Code ein, um abzufragen, ob eine Taste gedrückt wurde:
Delphi-Quellcode:
  if Key = VK_UP then // Pfeiltaste hoch
  begin

  end;
  if Key = VK_DOWN then // Pfeiltaste unten bzw. runter
  begin

  end;
Bei up fügst du dann noch die Panel Bewegeung des Spielers ein, in etwa so (ungetestet):
Delphi-Quellcode:
if Key = VK_UP then // Pfeiltaste hoch
begin

  if Panel1.Top <= 0 then // Überprüfen, ob der Panel am oberen Fensterrand angekommen ist
  begin
    Panel1.Top := Panel1.Top + 2;
  end;
end;

if Key = VK_DOWN then // Pfeiltaste unten bzw. runter
begin
  if Panel1.Top >= 100 then // Überprüfen, ob der Panel am unteren Fensterrand angekommen ist
  begin
    Panel1.Top := Panel1.Top - 2;
  end;
end;
Ich würde den Gegner so programmieren:
- Ballhöhe in einer Variable speichern
- in einem Timer sagen, dass der Gegner-Schläger sich in Richtung der Ballhöhe bewegen soll, ich würde nicht gerade ein niedriges Timer-Interval nehmen.

thkerkmann 8. Jan 2006 15:43

Re: Brauche HILFE beim PingPong-Spiel!!!!
 
Zitat:

Zitat von Nils_13

Bei up fügst du dann noch die Panel Bewegeung des Spielers ein, in etwa so (ungetestet):
Delphi-Quellcode:
if Key = VK_UP then // Pfeiltaste hoch
begin
  if Panel1.Top = 100 then // Überprüfen, ob der Panel am oberen Fensterrand angekommen ist
  begin
    Panel1.Top := Panel1.Top + 2 // Hier nehme ich nicht inc, da es ja um zwei erhöht werden soll.
  end;
end;

if Key = VK_DOWN then // Pfeiltaste unten bzw. runter
begin
  if Panel1.Top = 0 then // Überprüfen, ob der Panel am unteren Fensterrand angekommen ist
  begin
    Panel1.Top := Panel1.Top - 2 // Hier nehme ich nicht dec, da es ja um zwei ernidriegt
                                 // werden soll.
  end;
end;

Nur mal so...
Eine property (wie z.B. Panel1.Top) kann man eh nicht mit inc bzw. dec bearbeiten.
und...
der obere Fensterrand ist doch wohl eher bei 0 als bei 100.

Aber es wird schon.... ;-)

MasterDG 8. Jan 2006 16:52

Re: Brauche HILFE beim PingPong-Spiel!!!!
 
Hallo

Also ich würde zum testen ob das Panel am oberen Rand ist das machen:
Delphi-Quellcode:
if Panel.Top <= 10 then ... // Setz anstatt 10 den Wert ein wo bei dir die obere Grenze sein soll
und für den unteren Rand
Delphi-Quellcode:
if Panel.Top + Panel.Height >= 100 then ... // Setz anstatt 100 den Wert ein wo bei dir die untere Grenze sein soll
Gruß
MasterDG

Nils_13 8. Jan 2006 17:30

Re: Brauche HILFE beim PingPong-Spiel!!!!
 
Danke, ich änder das dann noch ab. Jetzt hab ich tatsächlich oben mit unten vertauscht :oops:

ghostdawg 8. Jan 2006 19:05

Re: Brauche HILFE beim PingPong-Spiel!!!!
 
Editfenster als Schläger und Panels und Buttons als Bälle? Dürft ihr kein Canvas oder DirectX benutzen?

malo 8. Jan 2006 20:13

Re: Brauche HILFE beim PingPong-Spiel!!!!
 
Zitat:

Zitat von ghostdawg
Editfenster als Schläger und Panels und Buttons als Bälle? Dürft ihr kein Canvas oder DirectX benutzen?

Dürfen sicherlich schon. Aber wer will einem Anfänger schon DirectX zumuten?

Es ist IMHO schon in Ordnung, Delphi-Komponenten für solche Zwecke zu "missbrauchen". Nur sollte man da versuchen, auf die richtigen zu verwenden :zwinker:


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:05 Uhr.
Seite 2 von 3     12 3      

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