如何用delphi来画出五子棋棋盘?如何表示棋子?

解决方案 »

  1.   

    放一个image控件
    格子多少你自己调整procedure TForm1.FormCreate(Sender: TObject);
    var
        len:integer;
        rwidth,rheight: Integer;
    begin
        len:=0;
        rwidth:= 13*(33+24);
        rheight:= 13*33;
        while len<=rheight do
        begin
          image1.Canvas.Brush.Color:=clnavy;
          image1.Canvas.Pen.Color:=clGray;
          image1.Canvas.MoveTo(0,len);
          image1.Canvas.LineTo(rwidth,len);
          inc(len,13);
        end;    len:=0;
        while len<=rwidth do
        begin
          image1.Canvas.Brush.Color:=clnavy;
          image1.Canvas.Pen.Color:=clGray;
          image1.Canvas.MoveTo(len,0);
          image1.Canvas.LineTo(len,rheight);
          inc(len,13);
        end;
    end;
      

  2.   

    棋子  你可以在指定坐标画小圆就ok了
    Image1.Canvas.Ellipse(2,2,8,8);
      

  3.   

    我是用stringgrid来实现的,然后自己画上想要的东西
      

  4.   

    //点鼠标时自己再判断一下unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ExtCtrls;type
      TForm1 = class(TForm)
        Image1: TImage;
        procedure FormCreate(Sender: TObject);
        procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
    var
        len:integer;
        rwidth,rheight: Integer;
    begin
        len:=0;
        rwidth:= 20*(33+24);
        rheight:= 20*33;
        while len<=rheight do
        begin
          image1.Canvas.Brush.Color:=clnavy;
          image1.Canvas.Pen.Color:=clGray;
          image1.Canvas.MoveTo(0,len);
          image1.Canvas.LineTo(rwidth,len);
          inc(len,20);
        end;    len:=0;
        while len<=rwidth do
        begin
          image1.Canvas.Brush.Color:=clnavy;
          image1.Canvas.Pen.Color:=clGray;
          image1.Canvas.MoveTo(len,0);
          image1.Canvas.LineTo(len,rheight);
          inc(len,20);
        end;
    end;procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      Image1.Canvas.Ellipse(x-8,y-8,x+8,y+8);end;end.
      

  5.   

    五子棋人人对局完整解决方案
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, BusinessSkinForm, bsSkinData, bsSkinCtrls, ExtCtrls,
      DB, DBClient, jpeg;type
      TForm1 = class(TForm)
        bsSkinLabel1: TbsSkinLabel;
        bsSkinLabel2: TbsSkinLabel;
        bsSkinLabel3: TbsSkinLabel;
        bsSkinLabel4: TbsSkinLabel;
        bsBusinessSkinForm1: TbsBusinessSkinForm;
        bsSkinData1: TbsSkinData;
        bsSkinButton1: TbsSkinButton;
        Panel1: TPanel;
        Image1: TImage;
        Image2: TImage;
        procedure Button1Click(Sender: TObject);
        procedure FormPaint(Sender: TObject);
        procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
        procedure FormCreate(Sender: TObject);
        procedure bsSkinButton1Click(Sender: TObject);
      private
        { Private declarations }
      public
        arr:array[0..18] of array[0..18] of boolean;
          aryint:array[0..18] of array[0..18] of integer;
        lef,rigt,m:integer;
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    //var
    //abc:array['a'..'z'] of string;
    begin
     // form1.Canvas.MoveTo(10,10);
    //  form1.Canvas.LineTo(100,100);
    end;procedure TForm1.FormPaint(Sender: TObject);
    var
    abc:array[0..18] of string;
    str:string;
    i,n,g,a,b:integer;
    begin
      for i:=1 to 19 do
      begin
        str:=inttostr(i);
         form1.Canvas.Pen.Color:=clblack;
          form1.Canvas.MoveTo(i*30,30);
          form1.Canvas.LineTo(i*30,19*30);
          form1.Canvas.TextOut(10,i*30-5,inttostr(I));
      end;
        for g:=0 to 18 do
      begin
        if g<8 then
        abc[g]:=Chr(65+g)
        else
        abc[g]:=chr(66+g);
      end;
      for n:=0 to 18 do
      begin
       form1.Canvas.Pen.Color:=clblack;
          form1.Canvas.MoveTo(30,(n+1)*30);
          form1.Canvas.LineTo(19*30,(n+1)*30);
          form1.Canvas.TextOut((n+1)*30-3,10,abc[n]);
      end;
      for a:=0 to 18 do
      begin
        for b:=0 to 18 do
        begin
          if aryint[a][b]=1 then
          begin
          form1.Canvas.Brush.Color:=clblack;
          form1.Canvas.Ellipse(a*30-12,b*30-12,a*30+12,b*30+12);
          end
          else if aryint[a][b]=2 then
          begin
            form1.Canvas.Brush.Color:=clwhite;
            form1.Canvas.Ellipse(a*30-12,b*30-12,a*30+12,b*30+12);
          end;
        end;
      end;end;procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
      var
      abc:array[0..18] of string;
    str:string;
      i,n,g,a,b:integer;
    begin
      bsskinlabel3.Caption:=inttostr(x);
      bsskinlabel4.Caption:=inttostr(y);
      if x mod 30 >=15  then
      begin
        i:=x div 30+1;
      end
      else
        i:=x div 30;
      if y mod 30 >= 15 then
      begin
        n:=y div 30 +1 ;
      end
      else
        n:=y div 30;
        lef:=i;
        rigt:=n;
      if aryint[i][n]=0 then
      begin
        if m=0 then
        begin
         form1.Canvas.Brush.Color:=clblack;
          form1.Canvas.Ellipse(i*30-12,n*30-12,i*30+12,n*30+12);
          arr[i][n]:=true;
          aryint[i][n]:=1;
          m:=1;
          if (aryint[i+1][n]=1) and  (aryint[i+2][n]=1) and (aryint[i+3][n]=1) and (aryint[i+4][n]=1) then
          showmessage('黑方胜' );
          if (aryint[i+1][n+1]=1) and  (aryint[i+2][n+2]=1) and (aryint[i+3][n+3]=1) and (aryint[i+4][n+4]=1) then
          showmessage('黑方胜' );
          if (aryint[i+1][n-1]=1) and  (aryint[i+2][n-2]=1) and (aryint[i+3][n-3]=1) and (aryint[i+4][n-4]=1) then
          showmessage('黑方胜' );
          if (aryint[i-1][n]=1) and  (aryint[i-2][n]=1) and (aryint[i-3][n]=1) and (aryint[i-4][n]=1) then
          showmessage('黑方胜' );
          if (aryint[i-1][n+1]=1) and  (aryint[i-2][n+2]=1) and (aryint[i-3][n+3]=1) and (aryint[i-4][n+4]=1) then
          showmessage('黑方胜' );
          if (aryint[i-1][n-1]=1) and  (aryint[i-2][n-2]=1) and (aryint[i-3][n-3]=1) and (aryint[i-4][n-4]=1) then
          showmessage('黑方胜' );
         end
         else
         begin
         form1.Canvas.Brush.Color:=clwhite;
          form1.Canvas.Ellipse(i*30-12,n*30-12,i*30+12,n*30+12);
          arr[i][n]:=true;
          aryint[i][n]:=2;
          m:=0;
          if (aryint[i+1][n]=2) and  (aryint[i+2][n]=2) and (aryint[i+3][n]=2) and (aryint[i+4][n]=2) then
          showmessage('白方胜' );
          if (aryint[i+1][n+1]=2) and  (aryint[i+2][n+2]=2) and (aryint[i+3][n+3]=2) and (aryint[i+4][n+4]=2) then
          showmessage('白方胜' );
          if (aryint[i+1][n-1]=2) and  (aryint[i+2][n-2]=2) and (aryint[i+3][n-3]=2) and (aryint[i+4][n-4]=2) then
          showmessage('白方胜' );
          if (aryint[i-1][n]=2) and  (aryint[i-2][n]=2) and (aryint[i-3][n]=2) and (aryint[i-4][n]=2) then
          showmessage('白方胜' );
          if (aryint[i-1][n+1]=2) and  (aryint[i-2][n+2]=2) and (aryint[i-3][n+3]=2) and (aryint[i-4][n+4]=2) then
          showmessage('白方胜' );
          if (aryint[i-1][n-1]=2) and  (aryint[i-2][n-2]=2) and (aryint[i-3][n-3]=2) and (aryint[i-4][n-4]=2) then
          showmessage('白方胜' );
         end;
        end;
        if i<9 then
          bsskinlabel1.Caption:='竖树标:  '+chr(i+64)//inttostr(i);
        else
          bsskinlabel1.Caption:='竖树标:  '+chr(i+65);
        bsskinlabel2.Caption:='横树标:  '+inttostr(n);
    end;procedure TForm1.FormCreate(Sender: TObject);
    var
    a,b:integer;
    begin
    for a:=0 to 18 do
      begin
        for b:=0 to 18 do
        begin
          aryint[a][b]:=0;
        end;
      end;
      for a:=0 to 18 do
      begin
        for b:=0 to 18 do
        begin
          arr[a][b]:=false;
        end;
      end;
    end;procedure TForm1.bsSkinButton1Click(Sender: TObject);
    var
    abc:array[0..18] of string;
    str:string;
    i,n,g,a,b:integer;
    begin
      for i:=1 to 19 do
      begin
        str:=inttostr(i);
         form1.Canvas.Brush.Color:=clblack;
          form1.Canvas.MoveTo(i*30,30);
          form1.Canvas.LineTo(i*30,19*30);
          form1.Canvas.TextOut(10,i*30-5,inttostr(I));
      end;
      for n:=0 to 18 do
      begin
       form1.Canvas.Brush.Color:=clblack;
          form1.Canvas.MoveTo(30,(n+1)*30);
          form1.Canvas.LineTo(19*30,(n+1)*30);
          form1.Canvas.TextOut((n+1)*30-3,10,abc[n]);
      end;
      for a:=0 to 18 do
      begin
        for b:=0 to 18 do
        begin
          if aryint[a][b]=1 then
          begin
          form1.Canvas.Brush.Color:=clblack;
          form1.Canvas.Ellipse(a*30-12,b*30-12,a*30+12,b*30+12);
          end
          else if aryint[a][b]=2 then
          begin
            form1.Canvas.Brush.Color:=clwhite;
            form1.Canvas.Ellipse(a*30-12,b*30-12,a*30+12,b*30+12);
          end;
        end;
      end;
      for g:=0 to 18 do
      begin
        if g<8 then
        abc[g]:=Chr(65+g)
        else
        abc[g]:=chr(66+g);
      end;
    end;end.
      

  6.   

    procedure drawchessboard();
    var x:integer;
    begin
      Form1.Canvas.Pen.Color:=clblue;
      for x:=1 to 15 do
      begin
         form1.Canvas.MoveTo(30,x*30);
         form1.Canvas.LineTo(450,x*30);
      end;
      for x:=1 to 15 do
      begin
         form1.Canvas.MoveTo(x*30,30);
         form1.Canvas.lineTo(x*30,450);
      end; 
    end;
      

  7.   

    先用画图软件把棋盘或棋子画出来,或者随便把一个围棋画面加工,制作成JPG、bmp图像加入资源文件,再在程序中调用