unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, StdCtrls;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
procedure StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;
var CanSelect: Boolean);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
xo:bool; //
implementation
{$R *.dfm}
procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
var
i,j:integer;
summvert,summhorz,summdiag1,summdiag2:string;
begin
with stringgrid1 do
begin
defaultDrawing:=True;// если этот параметр выставить в false, то никакие
//введённые символы отрисовываться не будут
// в фиксированных ячейках нельзя ничего писать, поэтому уберём их
FixedCols:=0;
FixedRows:=0;
Options:=Options-[goEditing];// защита от ввода символов с клавиатуры
end;
begin
if (stringgrid1.Cells[ACol,ARow]<>'') then exit;
if xo then stringgrid1.Cells[ACol,ARow]:='X'
else stringgrid1.Cells[ACol,ARow]:='O'; // -, -
xo:=not xo; //
for i:=0 to 19 do //
for j:=0 to 19 do
begin
summvert:=stringgrid1.cells[i,j]+stringgrid1.cells[i+1,j]+stringgrid1.cells[i+2,j]+stringgrid1.cells[i+3,j]+stringgrid1.cells[i+4,j];
summhorz:=stringgrid1.cells[i,j]+stringgrid1.cells[i,j+1]+stringgrid1.cells[i,j+2]+stringgrid1.cells[i,j+3]+stringgrid1.cells[i,j+4];
summdiag1:=stringgrid1.cells[i,j]+stringgrid1.cells[i+1,j+1]+stringgrid1.cells[i+2,j+2]+stringgrid1.cells[i+3,j+3]+stringgrid1.cells[i+4,j+4];
summdiag2:=stringgrid1.cells[i,j+4]+stringgrid1.cells[i+1,j+3]+stringgrid1.cells[i+2,j+2]+stringgrid1.cells[i+3,j+1]+stringgrid1.cells[i+4,j];
if (summvert='XXXXX') or (summhorz='XXXXX') or (summdiag1='XXXXX') or(summdiag2='XXXXX') then MessageDlg('X-win', mtInformation,[mbOk], 0);
if (summvert='OOOOO') or (summhorz='OOOOO') or (summdiag1='OOOOO') or(summdiag2='OOOOO') then MessageDlg('O-win', mtInformation,[mbOk], 0);
end;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
xo:=true; // -, -
end;
end.