(Gast)
n/a Beiträge
|
Re: Ping Pong Spiel vereinfacht.. Brauche aber trotzdem Hilf
11. Jan 2005, 17:24
Also nun geht gar nichts mehr. Ich habs erstmal wieder so gemacht, dass er wenigstens startet und dann nicht der Debugger nervt. ._. Ich lad nochmal das Programm hoch... Die Sachen, die noch in den geschweiften Klammern sind, muss ich irgendwo mit reinbringen...
Delphi-Quellcode:
type
//anfang.. mit uses etc.
TSpielfeld = class(TForm)
.... unwichtig
//HIER tSpielerKlasse!!
type
tSpieler = class
x1,x2,y1,y2:integer;
procedure SpielerErstellen;
end;
type
tBall = class
x,y,vx,vy,r:Single;
farbe:tColor;
procedure init(fNeu:tColor;xNeu,yNeu,vxNeu,vyNeu,rNeu:Single);
procedure ZeigeDich;
procedure BewegeDich;
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Spielfeld: TSpielfeld;
ball:tBall;
spieler:tSpieler;
punkt:integer = 0;
BallimSpiel:boolean = false;
x1,y1,x2,y2:integer;
implementation
{$R *.dfm}
// Muss ich hier noch was verändern? Hier deklarier ich eben die Prozedur.. Nur.. wie ruf ich sie am besten auf und wann?
procedure tSpieler.SpielerErstellen;
begin
with Spielfeld.Bild.Canvas do
begin
brush.Color:= clBlue;
rectangle(x1,y1,x2,y2);
pen.width:=1;
brush.style:=bsSolid;
pen.Mode:= pmNOTXOR;
end;
x1:=670;
y1:=100;
x2:=680;
y2:=210;
end;
procedure tBall.init(fNeu:tColor;xNeu,yNeu,vxNeu,vyNeu,rNeu:Single);
begin
farbe:= fNeu;
r:= rNeu;
x:= xNeu;
y:= yNeu;
vx:= vxNeu;
vy:=vyNeu;
end;
procedure tBall.ZeigeDich;
begin
with Spielfeld.Bild.Canvas do
begin
brush.color:= clRed;
ellipse(Round (x-r),Round(y-r),Round(x+r),Round(y+r))
end;
end;
procedure tBall.BewegeDich;
begin
x:=x+vx;
y:=y+vy;
with Spielfeld.Bild do
begin
if (x>width+r-1) then
begin
inc(punkt);
Spielfeld.Label3.Caption:=IntToStr(punkt);
BallimSpiel:=false; // es kann ein neuer ball gestartet werden
if punkt=10 then
Showmessage ('Game Over');
end;
if x<r+1 then
begin
x:=r+1;
vx:=-vx
end;
if (y>height-r-1) then
begin
y:= height-r-1;
vy:=-vy
end;
if y< r+1 then
begin
y := r+1;
vy:= -vy
end
end
end;
procedure TSpielfeld.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
case key of
vk_space:
begin
if BallimSpiel then
exit;
with Bild.Canvas do
begin
brush.Color:= clWhite;
rectangle(0,0,Bild.width,Bild.height);
pen.width:=1;
brush.style:=bsSolid;
pen.Mode:= pmNOTXOR;
end;
BallimSpiel:=true;
Ball.init(clWhite,100,200,5,5,15);
Ball.ZeigeDich;
end;
//hier soll der Spieler sich eben bewegen.. Nur meckert er da immer mit den Variablen rum, dass ich die nicht richtig deklariert hab.. Und wie sprech ich die Prozedur an? 'with procedure tSpieler do' ? das kann nicht richtig sein, weil das hab ich ja alles schon probiert.. Es nervt, wenn man immer alles ausprobieren muss =(
vk_down: // "runtertaste gedrückt"
begin
{with tSpieler do // paddle bewegen
begin
y1:=y1-10;
y2:=y2-10;
end; }
end;
vk_up: // "hochtaste gedrückt"
begin
// paddle bewegen
end;
end;
end;
procedure TSpielfeld.Timer1Timer(Sender:TObject);
begin
if BallimSpiel then
begin
{spieler.SpielerErstellen;}
Ball.ZeigeDich;
Ball.BewegeDich;
Ball.ZeigeDich;
end;
end;
//so hier eben der Schluss...
Ich häng nochmal das komplette Programm mit an. Bitte Leute, ich brauch eure Hilfe. =|
Achja, damits vielleicht schneller geht.. Meine ICQ : 103057471
|
|
Zitat
|