java五子棋

/***************************************************************
 *文件名称:five_algorism.java
 *版本:1.0
 *日期:2005年8月24日
 *作者:刘海平
 *说明:五子棋算法,用于初始化棋盘,判断胜负!
 *类说明: 类名:five_algorism
 *         成员方法:
 *         InitGame() 用于棋局初始化。
 *     IsGameOver()  用于判断棋局结束。
 *
 *其他:本程序采用10*10的地图,具体说明见相应的算法设计文档。
 **************************************************************/
 
 //全局变量声明

 
public class five_algorism{

 int board[][]=new int[10][10];
 boolean ptab[][][]=new boolean[10][10][192];
 boolean ctab[][][]=new boolean[10][10][192];
 int win[][]=new int[2][192];
 int num[]=new int[2];
 boolean turn=false,over=false;
 int winner;
 int x,y,i,q;
 
 //初始化函数
 public void InitGame()
 {
  int i,j,k;
  int count=0;
  over=false;
  num[0]=num[1]=0;
  
  for(i=0;i<192;i++)
  {
   win[0][i]=0;
   win[1][i]=0;
  }
  
  for(i=0;i<10;i++)
   for(j=0;j<10;j++)
    board[i][j]=2;
   
  for(i=0;i<10;i++)
     for(j=0;j<6;j++)
     {
      for(k=0;k<5;k++)
      {
      ptab[i][j+k][count]=true;
      ctab[i][j+k][count]=true;
      }
     count++; 
  }
  
  for(i=0;i<10;i++)
     for(j=0;j<6;j++)
     {
      for(k=0;k<5;k++)
      {
      ptab[j+k][i][count]=true;
      ctab[j+k][i][count]=true;
      }
     count++; 
  }
  
  for(i=0;i<6;i++)
     for(j=0;j<6;j++)
     {
      for(k=0;k<5;k++)
      {
      ptab[i+k][j+k][count]=true;
      ctab[i+k][j+k][count]=true;
      }
     count++; 
  }
 
  for(i=0;i<6;i++)
     for(j=9;j>=4;j--)
     {
      for(k=0;k<5;k++)
      {
      ptab[j-k][i+k][count]=true;
      ctab[j-k][i+k][count]=true;
      }
     count++; 
  }
 //随机函数,决定那方先下
 
 }
 
 
 //判断棋局胜负函数,需要传递4个参数,
 //分别是PLAYER1所下棋子的坐标m,n;PLAYER2所下棋子坐标u,v.
 public boolean IsGameOver(int m,int n,int u,int v)
 {
  
  
  //player1
       if(turn)
       {
     if(board[m][n]==2)
     {
      board[m][n]=0;
      num[0]++;
       if(num[0]==50&&num[1]==50)
       {
        winner=2;
        over=true;
       }
       else
          for(i=0;i<192;i++)
          {
             if(ptab[m][n][i])
             {
              win[0][i]++;
              ctab[m][n][i]=false;
              win[1][i]=7;
               if(win[0][i]==5)
               {
                winner=0;
                over=true;
               }             
             }
           }
          turn=false;  
     }
     
   
 
    }
   
    //player2
  if(!turn)
    {
        if(num[0]==50&&num[1]==50)
    {
     winner=2;
     over=true;
    }
    else
    for(i=0;i<192;i++)
    {
     win[1][q]++;
     ptab[u][v][q]=false;
     win[0][q]=7;
    }
   
    if(win[1][q]==5)
    {
     winner=1;
     over=true;
    }
 }
 
 return over;
 }
 
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值