ÍøÕ¾Ê×Ò³/¼¼Êõ¿ª·¢Áбí/ÄÚÈÝ

5×ÓÆåÔ´´úÂë

¼¼Êõ¿ª·¢2022-05-16ÔĶÁ
unit Main;  

interface  

uses  
¡¡Windows, Messages, SysUtils, Classes, Controls, Forms, Dialogs,  
¡¡ExtCtrls, StdCtrls, ComCtrls, Buttons, Graphics, mmsystem;  

type  
¡¡TForm1 = class(TForm)  
¡¡¡¡StatusBar1: TStatusBar;  
¡¡¡¡GroupBox1: TGroupBox;  
¡¡¡¡GroupBox2: TGroupBox;  
¡¡¡¡Panel1: TPanel;  
¡¡¡¡Label1: TLabel;  
¡¡¡¡BitBtn1: TBitBtn;  
¡¡¡¡BitBtn2: TBitBtn;  
¡¡¡¡Label3: TLabel;  
¡¡¡¡Label4: TLabel;  
¡¡¡¡BitBtn3: TBitBtn;  
¡¡¡¡Image1: TImage;  
¡¡¡¡Image2: TImage;  
¡¡¡¡Label5: TLabel;  
¡¡¡¡Label2: TLabel;  
¡¡¡¡Label6: TLabel;  
¡¡¡¡Label7: TLabel;  
¡¡¡¡Label8: TLabel;  
¡¡¡¡Label9: TLabel;  
¡¡¡¡Label10: TLabel;  
¡¡¡¡Timer1: TTimer;  
¡¡¡¡Label11: TLabel;  
¡¡¡¡procedure BitBtn2Click(Sender: TObject);  
¡¡¡¡procedure BitBtn1Click(Sender: TObject);  
¡¡¡¡procedure Image2MouseDown(Sender: TObject; Button: TMouseButton;  
¡¡¡¡¡¡Shift: TShiftState; X, Y: Integer);  
¡¡¡¡procedure FormCreate(Sender: TObject);  
¡¡¡¡procedure BitBtn3Click(Sender: TObject);  
¡¡¡¡procedure Timer1Timer(Sender: TObject);  
¡¡¡¡procedure Label11MouseDown(Sender: TObject; Button: TMouseButton;  
¡¡¡¡¡¡Shift: TShiftState; X, Y: Integer);  

¡¡private  
¡¡¡¡{ Private declarations }  
¡¡public  
¡¡¡¡{ Public declarations }  
¡¡end;  

¡¡FiveChess_Struct=record  
¡¡¡¡¡¡¡¡ x1 : integer;  
¡¡¡¡¡¡¡¡ y1 : integer;  
¡¡¡¡¡¡¡¡ x2 : integer;  
¡¡¡¡¡¡¡¡ y2 : integer;  
¡¡¡¡¡¡¡¡ state : byte;  
¡¡end;  
¡¡FiveChess_Data=array [0..14,0..14] of FiveChess_Struct;  

¡¡Player = ( NON,White,Black);  

var  
¡¡Form1: TForm1;  
¡¡Start_Flag : Boolean;  
¡¡FiveChess_Array:FiveChess_Data ;  
¡¡Online:¡¡player;  
¡¡whitewin,blackwin:byte;  
¡¡whitetime,blacktime:integer;  
¡¡px1,px2,py1,py2 : integer;  

¡¡Undo_i,Undo_j : integer;  
function Ini_Main():Boolean ;  
implementation  

uses Option;  

{$R *.DFM}  
//{$R AOE.RES}  


procedure Ini_FiveChess_Array();  
var  
¡¡¡¡i , j,k: integer;  
begin  

¡¡¡¡¡¡For i:=0 to 14 do¡¡begin  
¡¡¡¡¡¡¡¡¡¡For j:=0 to 14 do begin  
¡¡¡¡¡¡¡¡¡¡¡¡ FiveChess_Array[i,j].x1:=16+25*j;  
¡¡¡¡¡¡¡¡¡¡¡¡ FiveChess_Array[i,j].y1:=16+25*i;  
¡¡¡¡¡¡¡¡¡¡¡¡ FiveChess_Array[i,j].x2:=36+25*j;  
¡¡¡¡¡¡¡¡¡¡¡¡ FiveChess_Array[i,j].y2:=36+25*i;  
¡¡¡¡¡¡¡¡¡¡¡¡ FiveChess_Array[i,j].state:=0;  
¡¡¡¡¡¡¡¡¡¡¡¡ end;  
¡¡¡¡¡¡ end;  
end;  

procedure Draw_qipan();  
var  
¡¡¡¡¡¡i,j : integer;  
begin  
¡¡¡¡¡¡Form1.Image2.Canvas.Brush.Color:=RGB(247,207,16);  
¡¡¡¡¡¡Form1.Image2.Canvas.FillRect(Rect(0,0,400,400));  
¡¡¡¡¡¡Form1.Image2.Canvas.pen.Color:=RGB(0,0,0);  
¡¡¡¡¡¡for i:=1 to 16 do begin  
¡¡¡¡¡¡¡¡¡¡Form1.Image2.Canvas.MoveTo(0,25*i);  
¡¡¡¡¡¡¡¡¡¡Form1.Image2.Canvas.LineTo (400,25*i);  
¡¡¡¡¡¡¡¡¡¡Form1.Image2.Canvas.MoveTo(25*i,0);  
¡¡¡¡¡¡¡¡¡¡Form1.Image2.Canvas.LineTo (25*i,400);  
¡¡¡¡¡¡end;  

end;  


procedure Undo_Run();  
var  
¡¡¡¡ x1,x2,y1,y2 : integer;  
begin  




¡¡¡¡¡¡if¡¡(Undo_i<>-1) and (Undo_j<>-1) then¡¡ begin  
¡¡¡¡¡¡¡¡¡¡FiveChess_array[Undo_i,Undo_j].state :=0;  
¡¡¡¡¡¡¡¡¡¡x1:= FiveChess_Array[Undo_i,Undo_j].x1-2;  
¡¡¡¡¡¡¡¡¡¡y1:= FiveChess_Array[Undo_i,Undo_j].y1-2;  
¡¡¡¡¡¡¡¡¡¡x2:= FiveChess_Array[Undo_i,Undo_j].x2+2;  
¡¡¡¡¡¡¡¡¡¡y2:= FiveChess_Array[Undo_i,Undo_j].y2+2;  
¡¡¡¡¡¡¡¡¡¡Form1.Image2.Canvas.Brush.Color:=RGB(247,207,16);  
¡¡¡¡¡¡¡¡¡¡Form1.Image2.Canvas.FillRect(rect(x1,y1,x2,y2));  
¡¡¡¡¡¡¡¡¡¡Form1.Image2.Canvas.pen.Color:=RGB(0,0,0);  
¡¡¡¡¡¡¡¡¡¡Form1.Image2.Canvas.MoveTo((x1+x2)div 2-1 , y1);  
¡¡¡¡¡¡¡¡¡¡Form1.Image2.Canvas.LineTo((x1+x2)div 2-1 , y2);  
¡¡¡¡¡¡¡¡¡¡Form1.Image2.Canvas.MoveTo(x1,(y1+y2)div 2-1);  
¡¡¡¡¡¡¡¡¡¡Form1.Image2.Canvas.LineTo(x2,(y1+y2)div 2-1);  

¡¡¡¡¡¡¡¡ end;  

¡¡¡¡¡¡If Online=black then  
¡¡¡¡¡¡¡¡ Online:=White  
¡¡¡¡¡¡else  
¡¡¡¡¡¡¡¡ Online:=Black;¡¡   


end;  



function Ini_Main():Boolean ;  


begin  

¡¡¡¡ Result:=true;  

¡¡¡¡ px1:=0;  
¡¡¡¡ px2:=0;  
¡¡¡¡ py1:=0;  
¡¡¡¡ py2:=0;  

¡¡¡¡ Undo_i:=-1;  
¡¡¡¡ Undo_j:=-1;  

¡¡¡¡ whitetime:=0;  
¡¡¡¡ blacktime:=0;  

¡¡¡¡ form1.Label9.Caption :=inttostr(whitewin);  
¡¡¡¡ form1.Label10.Caption :=inttostr(blackwin);  


¡¡¡¡ Ini_FiveChess_Array;  
¡¡¡¡ Draw_Qipan;  
end;  






Function Judge_Success_on_off (X,Y,State:integer):Boolean;  
var  
¡¡¡¡ i,j,k,count : integer;  
begin  
¡¡¡¡ Count:=0;  
¡¡¡¡ Result:=false;  

¡¡¡¡ // ÅжÏÊúÁР 
¡¡¡¡ For i:=X-4 to X+4 do  
¡¡¡¡¡¡¡¡ if (i>=0) and (i<=15) then
¡¡¡¡¡¡¡¡¡¡¡¡begin
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡if FiveChess_array[i,y].state=state then
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ begin
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Inc(Count) ;
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡if count=5 then begin
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ result:=true;
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ break;
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ end;
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡end
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡else
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Count:=0;
¡¡¡¡¡¡¡¡¡¡¡¡end;
¡¡¡¡ //ÅжϺáÐÐ
¡¡¡¡ count:=0;
¡¡¡¡ For j:=y-4 to y+4 do
¡¡¡¡¡¡¡¡ if (j>=0) and (j<=15) then
¡¡¡¡¡¡¡¡¡¡¡¡begin
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡if FiveChess_array[X,j].state=state then
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ begin
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Inc(Count) ;
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡if count=5 then begin
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ result:=true;
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ break;
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ end;
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡end
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡else
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Count:=0;
¡¡¡¡¡¡¡¡¡¡¡¡end;
¡¡¡¡ //ÅжÏ'\'·½Ïò
¡¡¡¡ count:=0;
¡¡¡¡ For k:=-4 to 4 do begin
¡¡¡¡¡¡¡¡¡¡¡¡ i:=X+k;
¡¡¡¡¡¡¡¡¡¡¡¡ j:=Y+k;
¡¡¡¡¡¡¡¡¡¡¡¡ if (j>=0) and (j<=15) And(i>=0) and(i<=15)¡¡then
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡begin
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡if FiveChess_array[i,j].state=state then
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ begin
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Inc(Count) ;
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡if count=5 then begin
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ result:=true;
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ break;
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ end;
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡end
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡else
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Count:=0;
¡¡¡¡¡¡¡¡¡¡¡¡end;
¡¡¡¡¡¡end;
¡¡¡¡//ÅжÏ'/'·½Ïò
¡¡¡¡ count:=0;
¡¡¡¡ For k:=-4 to 4 do begin
¡¡¡¡¡¡¡¡¡¡¡¡ i:=X+k;
¡¡¡¡¡¡¡¡¡¡¡¡ j:=Y-k;
¡¡¡¡¡¡¡¡¡¡¡¡ if (j>=0) and (j<=15) And(i>=0) and(i<=15)¡¡then
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡begin
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡if FiveChess_array[i,j].state=state then
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ begin
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Inc(Count) ;
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡if count=5 then begin
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ result:=true;
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ break;
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ end;
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡end
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡else
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Count:=0;
¡¡¡¡¡¡¡¡¡¡¡¡end;
¡¡¡¡¡¡end;

end;



procedure TForm1.BitBtn2Click(Sender: TObject);
begin
¡¡¡¡¡¡Application.Terminate ;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
¡¡¡¡ Start_Flag:=true;
¡¡¡¡ If Start_Flag then¡¡begin
¡¡¡¡¡¡¡¡Form1.Image2.Enabled := true;
¡¡¡¡¡¡¡¡Form1.Timer1.Enabled := true;
¡¡¡¡¡¡¡¡Ini_Main;

¡¡¡¡ end;

end;

function Draw_Qizi_White(X,Y : Integer):boolean;
var
¡¡¡¡ i,j,x1,x2,y1,y2 : integer;
begin
¡¡¡¡¡¡result := false;
¡¡¡¡¡¡for i:=0 to 14 do
¡¡¡¡¡¡¡¡¡¡For j:=0 to 14 do begin
¡¡¡¡¡¡¡¡¡¡¡¡¡¡if (X> FiveChess_Array[i,j].x1)and(X<FiveChess_Array[i,j].x2)
¡¡¡¡¡¡¡¡¡¡¡¡and (y> FiveChess_Array[i,j].y1)and(y<FiveChess_Array[i,j].y2)
¡¡¡¡¡¡¡¡¡¡¡¡and (FiveChess_Array[i,j].state=0)¡¡¡¡then
¡¡¡¡¡¡¡¡¡¡¡¡begin
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ if FiveChess_Array[Undo_i,Undo_j].state<>0 then begin  
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Form1.Image2.Canvas.Brush.Color:=Rgb(100,100,100);  
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Form1.Image2.Canvas.FillRect (Rect(px1,py1,px2,py2));  
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ end;  

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ Form1.Image2.Canvas.Brush.Color:=Rgb(255,255,255);  
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ Form1.Image2.Canvas.Ellipse ( FiveChess_Array[i,j].x1,  
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ FiveChess_Array[i,j].y1,FiveChess_Array[i,j].x2,FiveChess_Array[i,j].y2);  
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ Form1.Image2.Canvas.Brush.Color:=RGB(255,255,255);  
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ Form1.Image2.Canvas.Ellipse ( FiveChess_Array[i,j].x1-2,  
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ FiveChess_Array[i,j].y1-2,FiveChess_Array[i,j].x2-2,FiveChess_Array[i,j].y2-2);  
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ FiveChess_array[i,j].state:=1;  

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ Undo_i:=i;  
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ Undo_j:=j;  


¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ Form1.Image2.Canvas.Brush.Color:=clred;  
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ px1:= FiveChess_Array[i,j].x1+3;  
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ py1:= FiveChess_Array[i,j].y1+3;  
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ px2:= FiveChess_Array[i,j].x2-7;  
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ py2:= FiveChess_Array[i,j].y2-7;  
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ Form1.Image2.Canvas.Ellipse (px1,py1,px2,py2);  





¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ if Judge_Success_on_off(i,j, FiveChess_Array[i,j].state) then  
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡begin  
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ whitewin:=whitewin+1;  
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ if whitewin>1 then  
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Application.MessageBox ('³ôÆå¨!±ÈÓãÍ·»¹³ô£¡','ʤ°ÜÄ˱ø¼Ò³£ÊÂ',0)  
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ else  
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Application.MessageBox ('°×·½ÒÑʤÀû!','ʤ°ÜÄ˱ø¼Ò³£ÊÂ',0);  

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ form1.label9.caption:=inttostr(whitewin);  
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ form1.Image2.Enabled :=false;  
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ Form1.Timer1.Enabled := false;  
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡end;  

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ Result := true;  
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ break;  
¡¡¡¡¡¡¡¡¡¡ end;  
¡¡¡¡¡¡end;  
end;  

function Draw_Qizi_Black(X,Y : Integer): boolean;  
var  
¡¡¡¡ i,j,x1,x2,y1,y2 : integer;  
begin  
¡¡¡¡¡¡result:=false;  
¡¡¡¡¡¡for i:=0 to 14 do  
¡¡¡¡¡¡¡¡¡¡for j:=0 to 14 do begin  
¡¡¡¡¡¡¡¡¡¡¡¡¡¡if (X> FiveChess_Array[i,j].x1)and(X<FiveChess_Array[i,j].x2)
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ and (y> FiveChess_Array[i,j].y1)and(y<FiveChess_Array[i,j].y2)
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ and (FiveChess_Array[i,j].state=0)¡¡¡¡then
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ begin
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡if FiveChess_Array[Undo_i,Undo_j].state<>0 then begin  
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ Form1.Image2.Canvas.Brush.Color:=Rgb(255,255,255);  
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ Form1.Image2.Canvas.FillRect (Rect(px1,py1,px2,py2));  
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡end;  
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Form1.Image2.Canvas.Brush.Color:=RGB(0,0,0);  
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Form1.Image2.Canvas.Ellipse ( FiveChess_Array[i,j].x1,  
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡FiveChess_Array[i,j].y1,FiveChess_Array[i,j].x2,FiveChess_Array[i,j].y2);  
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Form1.Image2.Canvas.Brush.Color:=RGB(100,100,100);  
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Form1.Image2.Canvas.Ellipse ( FiveChess_Array[i,j].x1-2,  
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡FiveChess_Array[i,j].y1-2,FiveChess_Array[i,j].x2-2,FiveChess_Array[i,j].y2-2);  

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡FiveChess_array[i,j].state := 2;  

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Undo_i:=i;  
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Undo_j:=j;  

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Form1.Image2.Canvas.Brush.Color:=clred;  
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡px1:= FiveChess_Array[i,j].x1+3;  
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡py1:= FiveChess_Array[i,j].y1+3;  
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡px2:= FiveChess_Array[i,j].x2-7;  
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡py2:= FiveChess_Array[i,j].y2-7;  
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Form1.Image2.Canvas.Ellipse (px1,py1,px2,py2);  


¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ if Judge_Success_on_off(i,j, FiveChess_Array[i,j].state) then  
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡begin  
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ blackwin:=blackwin+1;  
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ if blackwin>1 then  
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Application.MessageBox ('²»»á°É!ÄѵÀ±ÈÓãÍ·»¹³ô£¡','ʤ°ÜÄ˱ø¼Ò³£ÊÂ',0)  
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ else  
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Application.MessageBox ('ºÚ·½ÒÑʤÀû!','ʤ°ÜÄ˱ø¼Ò³£ÊÂ',0);  

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ form1.label10.caption:=inttostr(blackwin);  
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ form1.Image2.Enabled :=false;  
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ Form1.Timer1.enabled := False;  
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡end;  
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Result:=true;  
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡break;  
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ end;  
¡¡¡¡¡¡end;  
end;  

procedure TForm1.Image2MouseDown(Sender: TObject; Button: TMouseButton;  
¡¡Shift: TShiftState; X, Y: Integer);  

begin  
¡¡¡¡¡¡¡¡ if Online = White then¡¡ begin  
¡¡¡¡¡¡¡¡¡¡¡¡if draw_Qizi_white(X,Y) then  
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Online := Black  
¡¡¡¡¡¡¡¡¡¡¡¡end  
¡¡¡¡¡¡¡¡ else  
¡¡¡¡¡¡¡¡¡¡¡¡¡¡ if draw_Qizi_Black(X,Y) then  
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Online:=White;  



end;  

procedure TForm1.FormCreate(Sender: TObject);  
begin  
¡¡¡¡ Online:=white;  
¡¡¡¡ form1.Label11.Caption :='È˲»µ½É˺ÛÀÛÀÛ'#13+'¾Í²»»á¶®µÃºó»Ú!';  
¡¡¡¡ Start_Flag:=false;  
¡¡¡¡ Form1.Image2.Enabled := false;  
¡¡¡¡   



end;  

procedure TForm1.BitBtn3Click(Sender: TObject);  
begin  
¡¡¡¡¡¡ form2.show;  

end;  

procedure TForm1.Timer1Timer(Sender: TObject);  
begin  
¡¡¡¡¡¡if online=white then  
¡¡¡¡¡¡¡¡ whitetime:=whitetime +1  
¡¡¡¡¡¡else  
¡¡¡¡¡¡¡¡ blacktime:=blacktime +1;  

¡¡¡¡¡¡Form1.Label7.caption:=inttostr(whitetime);  
¡¡¡¡¡¡Form1.Label8.caption:=inttostr(blacktime);  



end;  

procedure TForm1.Label11MouseDown(Sender: TObject; Button: TMouseButton;  
¡¡Shift: TShiftState; X, Y: Integer);  
begin  
¡¡¡¡¡¡if (Button = mbleft) and (ssShift in shift) And (form1.Image2.Enabled = true)then  
¡¡¡¡¡¡¡¡ Undo_Run;  

¡¡¡¡¡¡end;  


end.  

end;  


//////////////////////////  


unit Option;  

interface  

uses  
¡¡Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,  
¡¡StdCtrls, Buttons;  

type  
¡¡TForm2 = class(TForm)  
¡¡¡¡GroupBox1: TGroupBox;  
¡¡¡¡RadioButton1: TRadioButton;  
¡¡¡¡RadioButton2: TRadioButton;  
¡¡¡¡BitBtn1: TBitBtn;  
¡¡¡¡BitBtn2: TBitBtn;  
¡¡¡¡GroupBox2: TGroupBox;  
¡¡¡¡RadioButton3: TRadioButton;  
¡¡¡¡RadioButton4: TRadioButton;  
¡¡¡¡RadioButton5: TRadioButton;  
¡¡¡¡procedure FormCreate(Sender: TObject);  
¡¡¡¡procedure BitBtn1Click(Sender: TObject);  
¡¡¡¡procedure BitBtn2Click(Sender: TObject);  
¡¡private  
¡¡¡¡{ Private declarations }  
¡¡public  
¡¡¡¡{ Public declarations }  
¡¡end;  

var  
¡¡Form2: TForm2;  


implementation  


uses  
¡¡¡¡ Main;  
{$R *.DFM}  

procedure TForm2.FormCreate(Sender: TObject);  
begin  
¡¡¡¡¡¡ form2.RadioButton1.Checked := true;  
¡¡¡¡¡¡ form2.RadioButton3.Checked := true;  
end;  

procedure TForm2.BitBtn1Click(Sender: TObject);  
begin  
¡¡¡¡¡¡if form2.RadioButton1.Checked = true then  
¡¡¡¡¡¡¡¡ Online := White  
¡¡¡¡¡¡else  
¡¡¡¡¡¡¡¡¡¡Online := Black;  

¡¡¡¡¡¡if¡¡ form2.RadioButton3.Checked then  
¡¡¡¡¡¡¡¡¡¡ begin  
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ whitewin:=0;  
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ blackwin:=0;  
¡¡¡¡¡¡¡¡¡¡ end ;  


¡¡¡¡¡¡Ini_main;  


¡¡¡¡¡¡form2.close;  




end;  

procedure TForm2.BitBtn2Click(Sender: TObject);  
begin  
¡¡¡¡ form2.Close ;  
end;  

end.

……

Ïà¹ØÔĶÁ