unit Unit95;
interface
uses
Winapi.Windows,
Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
Vcl.Graphics,
Vcl.Controls,
Vcl.Forms,
Vcl.Dialogs,
Vcl.ExtCtrls;
type
TForm4Gewinnt =
class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormPaint(Sender: TObject);
procedure ShapeMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormResize(Sender: TObject);
private
{ Private-Deklarationen }
FWerIstDran : integer;
SColor :
array[0..2]
of TColor;
FShapes :
array[1..7,1..6]
of TShape;
FWerte :
array[1..7, 1..6]
of integer;
public
{ Public-Deklarationen }
procedure NeuesSpiel;
procedure ZeigeSpielFeld;
end;
var
Form4Gewinnt: TForm4Gewinnt;
implementation
{$R *.dfm}
procedure TForm4Gewinnt.ZeigeSpielFeld;
var feldgroesse, dx, size, br, ho, x, y: Integer;
begin
br := clientwidth
div 7;
ho := clientheight
div 6;
if br < ho
then feldgroesse := br
else feldgroesse := ho;
size := round(0.8*feldgroesse);
dx := (feldgroesse-size)
div 2;
for x := 1
to 7
do
for y := 1
to 6
do
begin
FShapes[x,y].Width := size;
FShapes[x,y].Height := size;
FShapes[x,y].Left := (x-1)*feldgroesse+dx;
FShapes[x,y].Top := (y-1)*feldgroesse+dx;
FShapes[x,y].Brush.Color := SColor[FWerte[x,y]];
end;
end;
procedure TForm4Gewinnt.FormCreate(Sender: TObject);
var x, y : integer;
begin
SColor[0] := clwhite;
SColor[1] := clred;
SColor[2] := clblue;
for x := 1
to 7
do
for y := 1
to 6
do
begin
FShapes[x,y] := TShape.Create(Self);
FShapes[x,y].Parent := Self;
FShapes[x,y].Shape := stCircle;
FShapes[x,y].Tag := x*10+y;
// Wir weisen jedem Shape eine Nummer zu
FShapes[x,y].OnMouseDown := ShapeMouseDown;
end;
NeuesSpiel;
end;
procedure TForm4Gewinnt.FormPaint(Sender: TObject);
begin
ZeigeSpielFeld;
end;
procedure TForm4Gewinnt.FormResize(Sender: TObject);
begin
ZeigeSpielFeld;
end;
procedure TForm4Gewinnt.NeuesSpiel;
var x, y : integer;
begin
for x := 1
to 7
do
for y := 1
to 6
do
FWerte[x,y] := 0;
FWeristDran := 1;
ZeigeSpielFeld;
end;
procedure TForm4Gewinnt.ShapeMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var zeile, spalte, nr : integer;
begin
if Sender
is TShape
then
begin
nr := ( Sender
as TShape ).Tag;
spalte := nr
div 10;
for zeile := 6
downto 1
do
if ( FWerte[spalte,zeile] = 0 )
then
begin
FWerte[spalte,zeile] := FWerIstDran;
if FWerIstDran = 1
then FWerIstDran := 2
else FWerIstDran := 1;
ZeigeSpielFeld;
break;
end;
end;
end;
end.