![]() |
Pong Spiel - Ball bewegt sich nicht
Hallo erst mal,
ich finde es richtig toll von euch, dass ihr euch um die Probleme von anderen kümmert und ihnen helft. Das ist wirklich nett von euch. Ich selber habe da auch eine Frage an euch, und zwar wollte ich als Hausaufgabe das Pong Spiel programmieren, scheitere aber daran, dass der Ball sich nicht bewegt. Im Unterricht habe ich es hin bekommen, aber zu Hause wusste ich nicht mehr wie es ging. Muss man dann beim Timer im Objektinspektor noch was einstellen oder im Quelltext? Wie gesagt der Ball ist vorhanden nur bewegt er sich nicht. Ich hoffe, dass mir vielleicht irgendwer helfen kann. Danke |
Re: Pong Spiel - Ball bewegt sich nicht
Hi fransa,
erst einmal herzliche Willkommen in der Delphi-PRAXiS :dp: Wenn Du uns Deinen Quellcode zeigst, können wir Dir sicher noch um einiges besser helfen. Wenn Du den Quellcode einfügst, mache noch ein [delphi][ /delphi] (ohne das Leerzeichen) drum rum, damit das Forum den Code wie in Delphi hervorhebt. |
Re: Pong Spiel - Ball bewegt sich nicht
Delphi-Quellcode:
unit Unit1;
interface uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, Menus, ExtCtrls; type TForm1 = class(TForm) MainMenu1: TMainMenu; Menu: TMenuItem; Start1: TMenuItem; Beenden1: TMenuItem; Image1: TImage; Image2: TImage; Timer1: TTimer; procedure Beenden1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure Timer1Timer(Sender: TObject); procedure Start1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; d,f,g,x5,y5,x6,y6:integer; implementation {$R *.DFM} procedure TForm1.Beenden1Click(Sender: TObject); begin close; end; procedure TForm1.FormCreate(Sender: TObject); begin x5:=150;y5:=100;x6:=180;y6:=130; d:=5; image1.canvas.brush.color:=clwhite; image1.canvas.rectangle(0,0,600,400); image1.canvas.brush.color:=clmaroon; image1.canvas.ellipse(x5,y5,x6,y6); end; procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin image2.canvas.brush.color:=clnavy; image2.canvas.rectangle(100,100,150,200); if (GetAsyncKeyState(vk_up)<>0) then image2.top:=image2.top-d; if (GetAsyncKeyState(vk_down)<>0) then image2.top:=image2.top+d; end; procedure TForm1.Timer1Timer(Sender: TObject); begin x5:=x5+f;y5:=y5+g;x6:=x6+f;y6:=y6+g; with image1.canvas do begin brush.color:=clwhite; rectangle(0,0,600,400); brush.color:=clmaroon; ellipse(x5,y5,x6,y6); if x5>=570 then f:=f*(-1); if y5>=370 then g:=g*(-1); if x6<=30 then f:=f*(-1); if y6<=30 then g:=g*(-1); end; end; procedure TForm1.Start1Click(Sender: TObject); begin timer1.enabled:=true; end; end. |
Re: Pong Spiel - Ball bewegt sich nicht
Hi,
es scheint so, als ob Du nirgendwo die Variablen f und g änderst, die für die Beschleunigung da sind. |
Re: Pong Spiel - Ball bewegt sich nicht
Aha das wusste ich nicht. Und wie könnte ich das machen mit f nd g?
Ändere ich hier nur de Richtung?
Delphi-Quellcode:
if x5>=570 then f:=f*(-1);
if y5>=370 then g:=g*(-1); if x6<=30 then f:=f*(-1); if y6<=30 then g:=g*(-1); |
Re: Pong Spiel - Ball bewegt sich nicht
ja da änderst du nur die Richtung.. Du hast den Quellcode doch selbst geschrieben oder nicht? Dann musst du doch wissen was du da schreibst ? :gruebel:
|
Re: Pong Spiel - Ball bewegt sich nicht
Na das ich die Richtung ändere,dass weiß ich ja, aber ich weiß nicht wie ich die Variablen f und g verändern soll wie Die Muhkuh geschrieben hat? Das ist ja eigentlich meine Frage.
|
Re: Pong Spiel - Ball bewegt sich nicht
Du musst eigentlich nur f und g irgendwann setzen. Im FormCreate z.B oder so.. Je nachdem halt...
f=1 g=1 würde dann bedeuten das der Ball jedes mal wenn der Timer ausgeführt wird ein Feld nach rechts und ein Feld nach unten verschoben wird... Gruß Neutral General |
Re: Pong Spiel - Ball bewegt sich nicht
Ich habe f und g =5 gesetzt, aber der ball ist immer noch standhaft.
Ich werde dann morgen in der Schule wohl nochmal gucken müssen, aber trotzdem vielen Dank! |
Re: Pong Spiel - Ball bewegt sich nicht
Und du hast den Start-Button auch betätigt? (man kann ja nie wissen^^)
|
Re: Pong Spiel - Ball bewegt sich nicht
Ja hab ich :) Soviel weiß ich dann auch noch.
|
Re: Pong Spiel - Ball bewegt sich nicht
Ich würde vorschlagen, dass du dich mal im Forum umhörst, so wird das nichts, vorallem, weil zumindest ich nicht ansatzweise ein Pong entdeckt.
Hier mal der verschönerte Code (ein Teil davon):
Delphi-Quellcode:
var
frmMain : TfrmMain; d : Integer = 5; f : Integer; g : Integer; x5 : Integer = 150; y5 : Integer = 100; x6 : Integer = 180; y6 : Integer = 130; implementation {$R *.dfm} procedure TfrmMain.FormCreate(Sender: TObject); begin img.Canvas.Brush.color := clWhite; img.Canvas.Rectangle(0, 0, 600, 400); img.Canvas.Brush.Color :=clMaroon; img.Canvas.Ellipse(x5, y5, x6, y6); end; procedure TfrmMain.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin img2.Canvas.Brush.Color := clNavy; img2.Canvas.Rectangle(100, 100, 150, 200); if (GetAsyncKeyState(VK_UP) <> 0) then img2.Top:=img2.top - d; if (GetAsyncKeyState(VK_DOWN) <> 0) then img2.Top:=img2.top + d; end; |
Re: Pong Spiel - Ball bewegt sich nicht
Tut mir Leid, wenn ich das jetzt nicht verstehe, aber was ist daran anders?
|
Re: Pong Spiel - Ball bewegt sich nicht
Ich will dir damit sagen, dass ich mich mit deinem Code auseinandergesetzt habe, ihn in meinen Codestil umgewandelt habe und nicht durchgestiegen bin. Außerdem ist das nur ein Vorschlag, wie du deine Codes übersichtlicher gestalten könntest. Später bleiben dir dadurch Fehler erspart.
|
Re: Pong Spiel - Ball bewegt sich nicht
Okay danke.
Werde jetzt aber gehen und morgen in der Schule nochmal gucken. |
Re: Pong Spiel - Ball bewegt sich nicht
Also, dass der Ball sich bewegt, habe ich dann doch noch irgendwie hinbekommen, aber jetzt ist das Hauptproblem noch das Abprallen vom Schläger.
Der Schläger ist bei mir ein Image. Der Ball ist eine Ellipse. Muss ich dann die x/y Werte des Balles und den Schläger gleichsetzen oder müssen die sich überlappen oder wie macht man das? |
Re: Pong Spiel - Ball bewegt sich nicht
Dass der Ball sich bewegt, habe ich doch noch irgendwie hingekriegt, aber wie macht man das mit dem Abprallen vom Schläger?
Mein Schläger ist ein Image und mein Ball eine Ellipse. Muss man die x/y- Werte mit dem Schläger gleich setzen oder wie macht man das? |
Re: Pong Spiel - Ball bewegt sich nicht
Also, du musst nach jeder Bewegung des Balls prüfen ob er sich in dem Rechteck befindet.
Dazu prüfst du einfach ob er sich hinter der X-Linie des Rechtecks befindet. Wenn das der Fall ist prüfst du noch ob er sich zwischen Top und Bottom des Rechtecks befindet. Ist das der Fall dann kehrst du einfach die X-Bewegung um. Ist das nicht der Fall, dann hat der andere Spiele gepunktet ;-) |
Re: Pong Spiel - Ball bewegt sich nicht
Wuste garnicht das das überhaupt mit image geht...hab immer Paintbox genutzt.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:01 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-2025 by Thomas Breitkreuz