⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 weiqi.txt

📁 这是一个关于围棋的java源代码的简单的实现形式
💻 TXT
字号:
/*
<%
  str="c:\000\login.txt"
  Set MyFileObject=Server.CreateObject("Scripting.FileSystemObject")
  Set MyTextFile=MyFileObject.OpenTextFile("c:\000\login.txt", 8, TRUE)
  '记录用户时间
  MyTextFile.Write("访问时间:"&date&";"&time&"   JavaWQ0 来宾地址 ")
  '记录用户的IP地址:
  MyTextFile.WriteLine(Request.ServerVariables("REMOTE_ADDR"))
  'MyTextFile.Close
%>
<TITLE>Java语言(二):围棋的Java程序设计分析</title>

<pre>
围棋的Java程序设计分析
*/
import java.applet.*;
import java.lang.*;
import java.awt.*;

class Go extends Frame {
    //全局(类)变量*
    static int QP[][];               //围棋棋盘完全状态数组;
    static int times;                // 步数;
    static Graphics gg;              //窗口画笔;
    static int i,j;
static void CSH(){//初始化棋盘
        QP=new int[21][21];             //棋盘数组
        for(i=0;i<21;i++){               //初始化棋盘边部
          for(j=0;j<21;j++){
            QP[i][j]=100;}//end for
        }//end for
        for(i=1;i<20;i++){               //初始化棋盘内部
          for(j=1;j<20;j++){
            QP[i][j]=0;}//end for
        }//end for
}// end CSH();
static void HAQP(){//画棋盘
     for(i=0;i<19;i++){gg.drawLine(20+20,40+20+i*20,19*20+20,20+i*20+40);}
     for(i=0;i<19;i++){gg.drawLine(20+20+i*20,20+40,20+i*20+20,20*19+40);}
  ///////////// Draw Little Stars //////
      gg.setColor(Color.black);
      for(i=0;i<3;i++)
      for(j=0;j<3;j++){
        gg.fillOval(100+120*i-4,120+120*j-4,8,8);
      }
  // 在棋盘上画出当前已放的棋子
      for (i=1; i <20; i++) {
      for (j=1; j <20; j++) {
         if(QP[i][j]==-1){         // 奇数为白
           gg.setColor(Color.white);     //设置当前颜色为白*
           gg.fillOval(i*20+20-10, j*20+40-10, 20, 20); // 用当前颜色画出棋子
          }//end if
         if(QP[i][j]==1){        // 偶数为黑
           gg.setColor(Color.black);     //设置当前颜色为黑*
           gg.fillOval(i*20+20-10, j*20+40-10, 20, 20); // 用当前颜色画出棋子
          }//end if
	    }//end for
      }//end for
}
public Go() {//类Go的构造函数Go();
    super("围棋提子算法演示");
    setLayout(null);
    addNotify();
    resize(460,480);                          //窗口大小;
    setBackground(Color.gray);                //背景色
    gg=getGraphics();                         //画笔;
    CSH();                                    //初始化棋盘
    times=0;                                  //落子次数
    gg.setColor(Color.black);
    repaint();
}

public boolean handleEvent(Event event) {
     if (event.id == Event.WINDOW_DESTROY) { hide(); return true;}
  	return super.handleEvent(event);
}

public void paint(Graphics g){ //画棋盘,缺省色:黑;
     gg.setColor(Color.black);
     HAQP();          //画当前棋盘状态数组下的棋盘;
}

public boolean mouseDown(Event e, int x, int y) {
       if(x<30||x>410||y<50||y>430)return true;//若鼠标点击在棋盘外,重来;
       else {times++;DrawStone(x,y);}//DrawStone(x,y,times);}
       return true;
}//End MouseDown
static  void DrawStone(int x,int y){//画落子后的棋子
    int a,b;
      if(x % 20 > 10)a=x-x%20+20;      else a=x-x%20;
      if(y % 20 > 10)b=y-y%20+20;      else b=y-y%20;
      if(QP[a/20-1][b/20-2]==0){
            if(times%2==1){gg.setColor(Color.black);QP[a/20-1][b/20-2]=1;}
             else         {gg.setColor(Color.white);QP[a/20-1][b/20-2]=-1;}
            gg.fillOval(a-10, b-10, 20, 20);
            if(times%2==1)CountStone((a/20-1),(b/20-2),1);
             else CountStone((a/20-1),(b/20-2),-1);
      }
      else times--;
}
////////// 计算是否提子 ////////////////
static int CountStone(int x,int y,int StoneColor){//This x and y is used as Array[]i and j.
    int a=0,b=0,top=0;
    int i=0,j=0;
    if((QP[x-1][y]!=-StoneColor)&&(QP[x+1][y]!=-StoneColor)
     &&(QP[x][y+1]!=-StoneColor)&&(QP[x][y-1]!=-StoneColor))
          return 0;
    else{
        if(QP[x-1][y]==-StoneColor){
            FunCount(x-1,y,StoneColor);}
        if(QP[x+1][y]==-StoneColor){
            FunCount(x+1,y,StoneColor);}
        if(QP[x][y-1]==-StoneColor){
            FunCount(x,y-1,StoneColor);}
        if(QP[x][y+1]==-StoneColor){
            FunCount(x,y+1,StoneColor);}
        return 1;
    }//End Else
}//End MoveOutStone
static void FunCount(int x,int y,int StoneColor){//向一个方向计算提子
    int a=0,b=0;
    int i=0,j=0;
    int top=0;
    int PointX[],PointY[];
    PointX=new int[150];
    PointY=new int[150];

    top++;PointX[top]=x;PointY[top]=y;
    while(top>0){
            a=PointX[top];b=PointY[top];top--;
            QP[a][b]=50;
            if(QP[a-1][b]==0||QP[a+1][b]==0||
               QP[a][b+1]==0||QP[a][b-1]==0){
                for(i=1;i<=19;i++)
                for(j=1;j<=19;j++)
                    if(QP[i][j]==50) QP[i][j]=-StoneColor;
                                 top=0;
             }
             else{
                if(QP[a][b+1]==-StoneColor){top++;
                    PointX[top]=a;PointY[top]=b+1;
                }
                if(QP[a][b-1]==-StoneColor){top++;
                    PointX[top]=a;PointY[top]=b-1;
                }
                if(QP[a+1][b]==-StoneColor){top++;
                    PointX[top]=a+1;PointY[top]=b;
                }
                if(QP[a-1][b]==-StoneColor){top++;
                    PointX[top]=a-1;PointY[top]=b;
                }
             }
        }// End while(top>=0);
        ClearStone();
}//End FunMove

static void ClearStone(){//从棋盘把无气子涂掉
    int i=0,j=0;
        for(i=1;i<20;i++)
        for(j=1;j<20;j++){
             if(QP[i][j]==50){//if one
             gg.setColor(Color.gray);////////////////////////
             gg.fillOval(i*20+20-10, j*20+40-10, 20, 20);
             gg.setColor(Color.black);
             gg.drawLine(i*20+20-10<40?40:i*20+20-10,j*20+40,
                         i*20+20+10>400?400:i*20+20+10,j*20+40);
             gg.drawLine(i*20+20,j*20+40-10<60?60:j*20+40-10,
                         i*20+20,j*20+40+10>420?420:j*20+40+10);
             QP[i][j]=0;
             if((i==4&&j==4)||(i==4&&j==10)||(i==4&&j==16)||
                (i==10&&j==4)||(i==10&&j==10)||(i==10&&j==16)||
                (i==16&&j==4)||(i==16&&j==10)||(i==16&&j==16)){//if two
                  gg.setColor(Color.black);
                  gg.fillOval(20+20*i-4,40+20*j-4,8,8);
              }//End if two
             }//End if one
        }//end for
}//End ClearStone

}//End All Program
//////////////////////////////////
public class wq extends java.applet.Applet{
    public void init(){Go NewFrame;
    NewFrame=new Go();NewFrame.show();}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -