unit Ufussball;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, jpeg, ExtCtrls,math;
type
TForm1 =
class(TForm)
Spielfeld: TImage;
Ball: TImage;
speed: TTimer;
Move: TTimer;
procedure FormCreate(Sender: TObject);
procedure SpielfeldClick(Sender: TObject);
procedure speedTimer(Sender: TObject);
procedure MoveTimer(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
ges:integer;
{Geschwindigkeit des Balles}
ballposx,ballposy:integer;
{Ursprüngliche Position des Balles}
hinposx,hinposy:integer;
{Position des geplanten Balles}
x,y:integer;
{Koordinaten}
fall:integer;
{Für case_abfrage}
implementation
{$R *.dfm}
procedure bewegen ( move:ttimer; speed:ttimer);
{Berechnung der Postion vom Ball mit Abhänigkeit der Geschwindikeit}
var bewegenx,bewegeny,winkel:extended;
begin
speed.Enabled:=false;
if ballposx > hinposx
then bewegenx:=ballposx-hinposx;
{Hinposition ohne die Abhänigkeit der Geschwindkeit berechnet}
if ballposx < hinposx
then bewegenx:=hinposx-ballposx;
if ballposy > hinposy
then bewegeny:=ballposy-hinposy;
if ballposy < hinposy
then bewegeny:=hinposy-ballposy;
winkel:=RadToDeg (arctan(bewegeny/bewegenx));
x:= trunc(sin(winkel*pi/180)*ges);
{Hinpositon mit der Abhängigkeit der Geschwindigkeit}
y:=trunc(cos(winkel*pi/180)*ges);
if ballposx > hinposx
then x:=-x;
if ballposy > hinposy
then y:=-y;
move.enabled:=true;
{Nun bewegt sich der Ball}
ges:=0;
{Ist für den zweiten Schlag wichtig}
end;
procedure richtung (timer1:TTimer);
begin
timer1.enabled:=true;
hinposx:=mouse.CursorPos.X;
hinposy:=mouse.CursorPos.Y;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
fall:=1;
ballposx:=ball.Left;
ballposy:=ball.Top;
end;
procedure TForm1.SpielfeldClick(Sender: TObject);
begin
fall:=-fall;
{Bei Klick auf Spielfeld findet ein Vorzeichenwechsel bei fall statt.}
case fall
of {Bei -1 wird die Geschwindikeit ermittelt und bei 1 wird die Position berechnet.}
-1:richtung(speed);
1:bewegen(move,speed);
end;
end;
procedure TForm1.speedTimer(Sender: TObject);
begin
ges:=ges+10;
end;
procedure TForm1.MoveTimer(Sender: TObject);
var n,m:integer;
begin
ball.Top:=ball.Top+y;
ball.Left:=ball.Left+x;
move.Enabled:=false;
end;
end.