Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
|
AW: Schachfeld mit 2 Figuren (Läufer, Turm)
29. Jun 2010, 17:47
Mit dem Trennen meine ich sowas:
Delphi-Quellcode:
TFigur = enum (fgLaeufer, fgTurm, fgNone); // keine Syntaxgarantie
var
Form1: TForm1;
Spielfeld: array [0..7, 0..7] of TFigur;
implementation
{$R *.dfm}
procedure TForm1.RepaintBoard()
const
topmargin = 20;
leftmargin = 30;
var
width, height, i, j: Integer;
begin
fieldwidth := (ClientWidth - 2 * leftmargin) div 8;
fieldheight := (ClientHeight - 2 * topmargin) div 8;
for i := 0 to 7 do
for j := 0 to 7 do
begin
if (i+j) mod 2 = 0 then
Canvas.brush.Color := clWhite;
else
Canvas.brush.Color := clBlack;
Canvas.rectangle(leftmargin+i*fieldwidth, topmargin+j*fieldheight, fieldwidth, fieldheight);
// wenn du das schon kennst, kannst du folgendes durch ein case ersetzen
if Spielfeld[i,j] = fgLaeufer then
// Läufer malen
else if Spielfeld[i,j] = fgTurm then
// Turm malen
end;
end;
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
// Sollte ins OnCreate, und randomize nicht vergessen !!
// Spielfeld mit fgNone initialisieren!
Spielfeld[random(8),random(8)]:=fgNone;
Spielfeld[random(8),random(8)]:=fgNone;
end;
procedure TForm1.FormResize(Sender: TObject);
begin
// Nonsense
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
Showmessage('Bitte eine beliebige Taste zum Starten drücken!');
end;
// Noch ein OnFormPaint Ereignis, und darin dann RepaintBoard() aufrufen
end.
So ungefähr. Dass das nicht auf Anhieb compiliert ist mir klar.
|
|
Zitat
|