Показать сообщение отдельно

  #300  
Старый 17.03.2008, 12:57
dos999
Познающий
Регистрация: 15.02.2008
Сообщений: 98
Провел на форуме:
183980

Репутация: 50
По умолчанию

Цитата:
Меня попросили сделать простинькую игру, а именно крестики нолики игра скомпютером.
Мош кто сможет плиз

или хотябы игру на двоих(на одном компе, по очереди тыкать)эта наверника легче будет
Держи крестики нолики. Игра на двоих, возможны глюки, писал на корую руку.

Если есть желание можешь продумать искуственный интелект сам)))

Код:
 
unit fmuMain;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids;

type
  TFormMain = class(TForm)
    StringGrid1: TStringGrid;
    procedure StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;
      var CanSelect: Boolean);
    procedure FormCreate(Sender: TObject);
  private
    procedure MoveHod;
    function Finish: Boolean;
  public
    { Public declarations }
  end;

var
  FormMain: TFormMain;
  hod: String;

implementation

{$R *.dfm}

procedure TFormMain.MoveHod;
begin
  if hod = 'X' then
    hod := 'O' else
    if hod = 'O' then
      hod := 'X';
end;

procedure TFormMain.StringGrid1SelectCell(Sender: TObject; ACol,
  ARow: Integer; var CanSelect: Boolean);
begin
  if StringGrid1.Cells[ACol, ARow] = '' then
  begin
    StringGrid1.Cells[ACol, ARow] := hod;
    if Finish then
      Application.MessageBox(PChar('Ïîáåäèë '+hod), 'Ïîáåäà íàÕ!!!')
    else
      MoveHod;
  end;

end;

procedure TFormMain.FormCreate(Sender: TObject);
begin
  hod := 'X';
end;

function TFormMain.Finish: Boolean;
var
  i, j, p: Integer;

  function Presence(c, r: Integer): Boolean;
  begin
    if StringGrid1.Cells[c, r] = hod then
      Result := True
    else
      Result := False;
  end;

begin
  Result := false;
  for i := 0 to 2 do
  begin
    p := 0;
    for j := 0 to 2 do
      if Presence(i, j) then
        inc(p);
    if p = 3 then
      Result := true;
    p := 0;
    for j := 0 to 2 do
      if Presence(j, i) then
        inc(p);
    if p = 3 then
      Result := true;
  end;
  if Presence(1, 1) then
  begin
    if Presence(0, 0) and Presence(2, 2) then
      Result := True;
    if Presence(2, 0) and Presence(0, 2) then
      Result := True;
  end;
end;

end.
 
Ответить с цитированием