<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      5子棋源代碼

      [摘要]unit Main; interface uses  Windows, Messages, SysUtils, Classes, Controls, Forms, Dialogs,  Ext...
      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.


      標簽:5子棋源代碼 
      日韩精品一区二区三区高清