![]() |
Re: 2d game:ping-pong
Wieso, das Thema ist jetzt hoffentlich für immer beendet.
|
Re: 2d game:ping-pong
Ich versuche grad delphi von borland zu laden, mal sehn ob es klappt T_T
nachdem ich dann eure codes studiert habe kommen die nächsten fragen. -ja ich mach neuen thread bei einer neune frage auf |
Re: 2d game:ping-pong
kriegst du nicht, Thema ist jetzt beendet sonst wird hier gleich geschlossen.
|
Re: 2d game:ping-pong
Zitat:
|
Re: 2d game:ping-pong
Hallo Mangaka,
ich weiß nicht genau, wie weit du dich mit Delphi auskennst, aber was du auf jeden Fall können solltest, um ein Ping-Pong spiel zu programmieren ist: Deklarieren eigener Klassen und das Zeichnen von Objekten auf der Canvas. Dann solltest du dir erstmal generelle Gedanken zur Struktur deines Programms machen. Folgendes solltest du dir überlegen: Was für Variablen/ Objekte brauche ich für das Spiel? Was soll dann damit passieren? Zu der ersten Frage: Du brauch zwei Schläger, und einen Ball. Der Ball muss ausserdem noch Informationen darüber haben, in welche Richtung er sich bewegt (Bewegungsvektor) gegebenenfalls, wie groß er ist, welche Farbe und so weiter, der Phantasie sind keine Grenzen gesetzt, absolut notwenig sind nur die Koordinaten und der Bewegungsvektor. Die beiden Schläger brauchen eine Position (obere Kante) und die Breite (Abstand Oberkante/Unterkante). Was soll mit den Objekten passieren? Zuersteinmal müssen sie sich bewegen. Der Ball bewegt sich entlang seines Bewegungsvektors und prallt gegebenenfalls ab. Die Schläger bewegen sich auf Tastendruck. Danach müssen die Objekte noch auf den Bildschirm gezeichnet werden. Da das ganze in Echtzeit ablaufen soll, müssen diese Aktionen alle in einen Timer. Soweit. Das sind ersteinmal die Überlegungen, die man sich immer vorher machen muss. Die haben zwar erstmal nichts mit der Programmiersprache zu tun, sind aber mindestens genausowichtig, wie das Coden selbst. Falls dir die obigen Überlegungen nicht weiterhelfen, dann versuch deine Schwierigkeiten im Detail weiter zu klären. Grüße Seniman |
Re: 2d game:ping-pong
Delphi-Quellcode:
Und jetzt ist der Ball nicht mehr verzehrt.
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls; type TForm1 = class(TForm) Timer1: TTimer; procedure FormCreate(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure FormPaint(Sender: TObject); procedure FormDestroy(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; Ball : TRect; BallSpeedX : integer = 5; BallSpeedY : integer = 5; dx : integer = 1; dy : integer = 1; BallHeight : integer = 30; BallWidth : integer = 30; // offscreen, flickefrei Offscreen : TBitmap; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin Caption := 'B_Ball'; Width := 600; Height := 300; Ball := Rect(0,0,BallWidth,BallHeight); Timer1.Interval := 1; Offscreen := TBitmap.Create(); with Offscreen do begin PixelFormat := pf32bit; Width := Screen.Width; Height := Screen.Height; Canvas.Brush.Color := clOlive; Canvas.Pen.Color := clBlack; end; end; procedure TForm1.Timer1Timer(Sender: TObject); var old : integer; begin// FormPaint(Self); OffsetRect(Ball,dx * BallSpeedX,dy * BallSpeedY); // Korrektur bei Bandenkollision if (Ball.Left < 0) then // links begin dx := 1; end else if (Ball.Left + BallWidth > ClientRect.Right) then// rechts begin dx := -1; end; if (Ball.Top < 0) then // oben begin dy := 1; end else if (Ball.Top + BallHeight > ClientRect.Bottom) then// unten begin dy := -1; end; FormPaint(Self); end; procedure TForm1.FormPaint(Sender: TObject); begin// with Offscreen do begin Canvas.Brush.Style := bsSolid; Canvas.Brush.Color := clOlive; Canvas.FillRect(ClientRect); Canvas.Brush.Style := bsClear; Canvas.Ellipse(Ball); end; BitBlt(Canvas.Handle,0,0,Width,Height, Offscreen.Canvas.Handle,0,0,SRCCOPY); end; procedure TForm1.FormDestroy(Sender: TObject); begin// Offscreen.Free(); end; end. |
Re: 2d game:ping-pong
@mangaka: noch ein Beitrag außer Danke oder sowas und es zählt: ich hab früher auch Pong geproggt und hatte nur ein kleines Problem.
|
Re: 2d game:ping-pong
hmmm.. danke für eure hilfe und seniman danke für deine grundsätzlichen überlegungen!
kann ich dich in icq kontaktieren? hier meine icqno.: 173976608 Ich frag nur weil ich glaube das Nild_13 irgendwas gegen mich hat Oo Der geht mir irgendwie langsam auf die nerven... btw.: habe jetzt delphi7 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:29 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 by Thomas Breitkreuz