unit ball1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls;
type
TForm1 =
class(TForm)
Timer1: TTimer;
Shape1: TShape;
Panel1: TPanel;
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Shape1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Button1Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
vx,vy,anzahl:integer;
//Deklarierung der Variablen
implementation
{$R *.DFM}
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin //panel1=Torwart
panel1.left:=x-(panel1.width
div 2);
//Position des Mauszeiger im Formblatt->Mitte des Torwarts
end;
procedure TForm1.Shape1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
panel1.left:=shape1.left+x-(panel1.width
div 2);
//Position des Mauszeiger im Ball->Mitte des Torwarts
end;
procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
panel1.left:=panel1.left+x-(panel1.width
div 2);
//Position des Mauszeiger im Torwart->Mitte des Torwarts
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
vx:=5;
// Geschwindigkeit des Balles
vy:=5;
timer1.enabled:=true;
anzahl:=0;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
shape1.left:=shape1.left+vx;
// Bewegung des Balles (shape1=ball)
shape1.top:=shape1.top+vy;
if (shape1.left<=0)
or (shape1.left>=(form1.clientwidth-shape1.width))
then
vx:=-vx;
//Reflektierung des Balles an der X-Achse
if (shape1.top<=0)
or (shape1.top>=(form1.clientheight-shape1.height))
then
vy:=-vy;
//Reflektierung des Balles an der Y-Achse
if (shape1.top + shape1.height >= panel1.top)
//Ball auf der Höhe des Torwarts
and(panel1.left <= shape1.left + shape1.width
div 2)
//linke Torwartseite <= Mitte des Balles
and(panel1.left + panel1.width >= shape1.left + shape1.width
div 2)
then //rechte Torwartseite >= Mitte des Balles
begin //Ball muss den Torwart berühren
inc(anzahl);
//Erhöhung der Anzahl der Reflektionen um 1
vy:=-vy;
//Reflektion des Balles
label3.caption:=inttostr(anzahl)+'
x reflektiert';
//Ausgabe der Anzahl an Reflektionen
end;
if shape1.top > panel1.top
then //Falls der Ball unter dem Torwart ist
begin
button1.enabled:=true;
//Neustart möglich
button1.visible:=true;
label2.visible:=true;
//Game Over
timer1.enabled:=false;
//Ballbewegung stoppen
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
timer1.enabled:=true;
//Neustart
shape1.top:=0;
//Ball startet oben
shape1.left:=form1.width
div 2 - shape1.width
div 2;
//Ball startet in der Mitte
panel1.left:=form1.width
div 2 - panel1.width
div 2;
//Torwart in der Mitte
button1.visible:=false;
//Unsichbar machen
label2.visible:=false;
label3.caption:='
Anzahl der Reflektionen';
anzahl:=0;
//Zurücksetzung der Anzahl auf 0
vx:=5;
// Anfangsgeschwindigkeit
vy:=5;
end;
end.