Einzelnen Beitrag anzeigen

Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#4

AW: Schachfeld mit 2 Figuren (Läufer, Turm)

  Alt 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.
  Mit Zitat antworten Zitat