Sakktábla
Készítsünk programot, mely egy sakktáblát jelenít meg.
Ügyeljünk arra, hogy a tábla szabályos legyen (az a1 mezőnek sötétnek kell lenni). Vegyük figyelembe azt is,
hogy a táblán később figurákat kell elhelyezni, azaz a sötét ne fekete és a
világos mező ne fehér legyen. A fehér és fekete maradjon meg a figurák
színének. Ha a formot átméretezzük, áthelyezzük,
akkor rajzolja újra a táblát, ne legyen a sakktábla töredezett.
A program futási képe:
A program listája:
unit USakkTabla;
interface
uses
Windows, Messages, SysUtils, Variants, Classes,
Graphics, Controls, Forms, Dialogs, StdCtrls;
type
TfmSakkTabla = class(TForm)
btKilepes: TButton;
procedure FormPaint(Sender: TObject);
procedure btKilepesClick(Sender: TObject);
procedure FormCanResize(Sender: TObject; var NewWidth,
NewHeight: Integer; var Resize: Boolean);
private
{ Private declarations }
public
{ Public declarations }
end;
var
fmSakkTabla: TfmSakkTabla;
implementation
{$R *.dfm}
procedure TfmSakkTabla.btKilepesClick(Sender: TObject);
begin
Close;
end;
procedure TfmSakkTabla.FormPaint(Sender: TObject);
Var I, J: Word;
Xk,Yk: Integer;
Const D=60;
begin
Xk:= ClientWidth Div 2;
Yk:= ClientHeight Div 2;
With Canvas Do
Begin
Brush.Color:= clBtnFace;
Pen.Color:= clBtnFace;
Rectangle(0,0,2*Xk,2*Yk);
Brush.Color:= clWhite;
Pen.Color:= clWhite;
Rectangle(Xk-9*(D Div 2),Yk-9*(D Div 2),
Xk+9*(D Div 2),Yk+9*(D Div 2));
Pen.Color:= RGB(144,144,0);
Rectangle(Xk-4*D,Yk-4*D, Xk+4*D,Yk+4*D);
For I:= 1 To 8 Do For J:= 1 To 8 Do
Begin
If Odd(I+J) Then
Begin
Brush.Color:= RGB(144,144,0);
Pen.Color:= RGB(144,144,0);
End
Else
Begin
Brush.Color:= RGB(224,224,224);
Pen.Color:= RGB(224,224,224);
End;
Rectangle(Xk-(5-I)*D,Yk-(5-J)*D,
Xk-(4-I)*D,Yk-(4-J)*D);
End;
Brush.Color:= clWhite;
Pen.Color:= clBlack;
For I:= 1 To 8 Do
Begin
Font.Size:= 12;
TextOut(Xk+I*D-73*D Div 16,Yk+65*D Div 16, Chr(96+I));
TextOut(Xk+33*D Div 8,Yk-I*D+71*D Div 16, IntToStr(I));
End;
End;
end;
procedure TfmSakkTabla.FormCanResize(Sender: TObject; var NewWidth,
NewHeight: Integer; var Resize: Boolean);
begin
FormPaint(Sender);
end;
end.