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

📄 java.txt

📁 网络五子棋要求对弈双方属于同一网络中的不同计算机
💻 TXT
📖 第 1 页 / 共 3 页
字号:
                          {   
                                  int   l   =   0;   
                                  if(QiPan[i][j]   ==   0)   
                                  {   
                                          DoAStep(i,   j,   byte0);   
                                          l   =   CalcCPU(i,   j,   byte0);   
                                  }   
                                  if(l   >   0)   
                                  {   
                                          int   i1   =   0;   
                                          byte   byte1;   
                                          if(byte0   ==   1)   
                                                  byte1   =   2;   
                                          else   
                                                  byte1   =   1;   
                                          if(EnterTimes   <=   level   &&   steps   <   ((GRIDSUM   *   GRIDSUM)   /   100)   *   80)   
                                                  i1   =   CPUDo(cxy,   byte1);   
                                          l   +=   i1;   
                                          if(l   +   Math.abs(rd.nextInt())   %   5   >   ai2[0]   ||   !flag)   
                                          {   
                                                  ai[0]   =   i;   
                                                  ai1[0]   =   j;   
                                                  ai2[0]   =   l;   
                                                  flag   =   true;   
                                          }   
                                          QiPan[i][j]   =   0;   
                                  }   
                          }   
    
                  }   
    
                  if(EnterTimes   <=   1)   
                  {   
                          cxy.x   =   ai[0];   
                          cxy.y   =   ai1[0];   
                          int   k   =   0;   
                          do   
                          {   
                                  try   
                                  {   
                                          Thread.sleep(300L);   
                                  }   
                                  catch(InterruptedException   _ex)   {   }   
                                  QiPan[cxy.x][cxy.y]   =   byte0;   
                                  repaint();   
                                  try   
                                  {   
                                          Thread.sleep(300L);   
                                  }   
                                  catch(InterruptedException   _ex)   {   }   
                                  QiPan[cxy.x][cxy.y]   =   0;   
                                  repaint();   
                          }   while(++k   <   2);   
                  }   
                  EnterTimes--;   
                  return   ai2[0];   
          }   
    
          private   void   CPUInit()   
          {   
                  PosAdd[0][0]   =   8;   
                  PosAdd[0][1]   =   -2;   
                  PosAdd[1][0]   =   -2;   
                  PosAdd[0][2]   =   3;   
                  PosAdd[2][0]   =   3;   
                  PosAdd[0][3]   =   2;   
                  PosAdd[3][0]   =   2;   
                  PosAdd[1][1]   =   -7;   
                  PosAdd[1][2]   =   -1;   
                  PosAdd[2][1]   =   -1;   
                  PosAdd[1][3]   =   -1;   
                  PosAdd[3][1]   =   -1;   
                  PosAdd[2][2]   =   4;   
                  PosAdd[3][3]   =   4;   
                  PosAdd[2][3]   =   4;   
                  PosAdd[3][2]   =   4;   
          }   
    
          private   int   CalcCPU(int   i,   int   j,   byte   byte0)   
          {   
                  CXY   cxy   =   new   CXY();   
                  String   s   =   "";   
                  String   s1   =   "";   
                  String   s2   =   "";   
                  byte   byte1   =   0;   
                  CalcTimes++;   
                  if(byte0   ==   1)   
                          byte1   =   2;   
                  else   
                  if(byte0   ==   2)   
                          byte1   =   1;   
                  int   k   =   0;   
                  int   l   =   0;   
                  do   
                  {   
                          int   i1   =   0;   
                          String   s3   =   "";   
                          String   s4   =   "";   
                          String   s5   =   "";   
                          int   j1   =   0;   
                          do   
                          {   
                                  int   k1   =   0;   
                                  cxy.x   =   i;   
                                  for(cxy.y   =   j;   MoveAGrid(cxy,   l   +   4   *   j1)   &&   k1   <   6   &&   QiPan[cxy.x][cxy.y]   !=   byte1;   k1++)   
                                          if(QiPan[cxy.x][cxy.y]   ==   byte0)   
                                          {   
                                                  if(j1   ==   0)   
                                                          s4   =   s4   +   "1";   
                                                  else   
                                                          s5   =   "1"   +   s5;   
                                                  i1++;   
                                          }   else   
                                          if(j1   ==   0)   
                                                  s4   =   s4   +   "0";   
                                          else   
                                                  s5   =   "0"   +   s5;   
    
                                  if(j1   ==   0)   
                                          s4   =   s4   +   "2";   
                                  else   
                                          s5   =   "2"   +   s5;   
                          }   while(++j1   <   2);   
                          i1++;   
                          s3   =   s5   +   "1"   +   s4;   
                          if(s3.indexOf("11111")   !=   -1)   
                                  i1   +=   1000;   
                          else   
                          if(s3.indexOf("011110")   !=   -1)   
                                  i1   +=   500;   
                          else   
                          if(s3.indexOf("211110")   !=   -1   ||   s3.indexOf("011112")   !=   -1   ||   s3.indexOf("01110")   !=   -1   ||   s3.indexOf("01110")   !=   -1   ||   s3.indexOf("011010")   !=   -1   ||   s3.indexOf("010110")   !=   -1   ||   s3.indexOf("11101")   !=   -1   ||   s3.indexOf("10111")   !=   -1   ||   s3.indexOf("11011")   !=   -1)   
                                  i1   +=   100;   
                          else   
                          if(s3.indexOf("21110")   !=   -1   ||   s3.indexOf("01112")   !=   -1   ||   s3.indexOf("0110")   !=   -1   ||   s3.indexOf("211010")   !=   -1   ||   s3.indexOf("210110")   !=   -1)   
                                  i1   +=   20;   
                          if(l   ==   1   ||   l   ==   3)   
                                  i1   +=   (i1   *   20)   /   100;   
                          k   +=   i1;   
                  }   while(++l   <   4);   
                  if(CalcTimes   <=   1)   
                          k   +=   CalcCPU(i,   j,   byte1);   
                  else   
                  if(k   >   10)   
                          k   -=   10;   
                  CalcTimes--;   
                  return   k;   
          }   
    
          private   int   CalcZi(int   i,   int   j,   byte   byte0)   
          {   
                  CXY   cxy   =   new   CXY();   
                  int   k   =   0;   
                  int   l   =   0;   
                  do   
                  {   
                          int   i1   =   0;   
                          int   j1   =   0;   
                          do   
                          {   
                                  cxy.x   =   i;   
                                  cxy.y   =   j;   
                                  if(MoveAGrid(cxy,   l   +   4   *   j1)   &&   QiPan[cxy.x][cxy.y]   ==   byte0)   
                                          do   
                                          {   
                                                  if(QiPan[cxy.x][cxy.y]   ==   0   ||   QiPan[cxy.x][cxy.y]   !=   byte0)   
                                                          break;   
                                                  i1++;   
                                          }   while(MoveAGrid(cxy,   l   +   4   *   j1));   
                          }   while(++j1   <   2);   
                          if(i1   >   k)   
                                  k   =   i1;   
                  }   while(++l   <   4);   
                  return   ++k;   
          }   
    
          private   boolean   CanDo()   
          {   
                  return   steps   <   ((GRIDSUM   *   GRIDSUM)   /   100)   *   80;   
          }   
    
          public   void   ClearPan()   
          {   
                  for(int   i   =   0;   i   <   GRIDSUM;   i++)   
                  {   
                          for(int   j   =   0;   j   <   GRIDSUM;   j++)   
                                  QiPan[i][j]   =   0;   
    
                  }   
    
                  scHong   =   0;   
                  scHei   =   0;   
                  steps   =   0;   
                  recLU.x   =   8;   
                  recRD.x   =   9;   
                  recLU.y   =   8;   
                  recRD.y   =   9;   
                  haveWin   =   false;   
          }   
    
          private   int   DoAStep(int   i,   int   j,   byte   byte0)   
          {   
                  if(QiPan[i][j]   !=   0   ||   byte0   ==   0   ||   byte0   >   2)   
                  {   
                          return   0;   
                  }   else   
                  {   
                          QiPan[i][j]   =   byte0;   
                          return   1;   
                  }   
          }   
    
          private   void   FreshRec(int   i,   int   j)   
          {   
                  if(i   -   recLU.x   <   2)   
                  {   
                          recLU.x   =   i   -   2;   
                          if(recLU.x   <   0)   
                                  recLU.x   =   0;   
                  }   
                  if(recRD.x   -   i   <   2)   
                  {   
                          recRD.x   =   i   +   2;   
                          if(recRD.x   >=   GRIDSUM)   
                                  recRD.x   =   GRIDSUM   -   1;   
                  }   
                  if(j   -   recLU.y   <   2)   
                  {   
                          recLU.y   =   j   -   2;   
                          if(recLU.y   <   0)   
                                  recLU.y   =   0;   
                  }   
                  if(recRD.y   -   j   <   2)   
                  {   
                          recRD.y   =   j   +   2;   
                          if(recRD.y   >=   GRIDSUM)   
                                  recRD.y   =   GRIDSUM   -   1;   
                  }   
          }   
    
          private   boolean   MoveAGrid(CXY   cxy,   int   i)   
          {   
                  boolean   flag   =   false;   
                  i   %=   8;   
                  int   j   =   cxy.x   +   oAdd[i][0];   
                  int   k   =   cxy.y   +   oAdd[i][1];   
                  if(j   >=   0   &&   j   <   GRIDSUM   &&   k   >=   0   &&   k   <   GRIDSUM)   
                  {   
                          cxy.x   =   j;   
                          cxy.y   =   k;   
                          flag   =   true;   
                  }   
                  return   flag;   
          }   
    
          public   void   drawQi(Graphics   g,   int   i,   int   j,   int   k)   
          {   
                  switch(k)   
                  {   
                  case   0:   //   '\0'   
                          g.clearRect(i   *   GRIDWIDTH   +   1,   j   *   GRIDWIDTH   +   1,   GRIDWIDTH   -   1,   GRIDWIDTH   -   1);   
                          return;   
    
                  case   1:   //   '\001'   
                          g.setColor(Color.black);   
                          g.fillArc(i   *   GRIDWIDTH   -   6,   j   *   GRIDWIDTH   -   6,   GRIDWIDTH   -   2,   GRIDWIDTH   -   2,   0,   360);   
                          return;   
    
                  case   2:   //   '\002'   
                          g.setColor(Color.white);   
                          break;   
                  }   
                  g.fillArc(i   *   GRIDWIDTH   -   6,   j   *   GRIDWIDTH   -   6,   GRIDWIDTH   -   2,   GRIDWIDTH   -   2,   0,   360);   
                  g.setColor(Color.black);   
                  g.drawArc(i   *   GRIDWIDTH   -   6,   j   *   GRIDWIDTH   -   6,   GRIDWIDTH   -   2,   GRIDWIDTH   -   2,   0,   360);   
          }   
    
          public   boolean   handleEvent(Event   event)   
          {   
                  if(event.id   !=   501   ||   event.target   !=   this)   
                  {   
                          return   super.handleEvent(event);   
                  }   else   
                  {   
                          mouseDOWNThis(event);   
                          return   true;   
                  }   
          }   
    
          public   void   init()   
          {   
                  super.init();   
                  LoopThread   =   null;   
                  oAdd[0][0]   =   0;   
                  oAdd[0][1]   =   -1;   
                  oAdd[1][0]   =   1;   
                  oAdd[1][1]   =   -1;   
                  oAdd[2][0]   =   1;   
                  oAdd[2][1]   =   0;   
                  oAdd[3][0]   =   1;   
                  oAdd[3][1]   =   1;   
                  oAdd[4][0]   =   0;   
                  oAdd[4][1]   =   1;   
                  oAdd[5][0]   =   -1;   
                  oAdd[5][1]   =   1;   
                  oAdd[6][0]   =   -1;   
                  oAdd[6][1]   =   0;   
                  oAdd[7][0]   =   -1;   
                  oAdd[7][1]   =   -1;   
                  CPUInit();   
                  setLayout(null);   
                  resize(197,   200);   
                  try   
                  {   
                          image_you   =   getImage(new   URL("http://203.212.5.161/6288/simulator/game/you-win.gif"));   
                          image_phone   =   getImage(new   URL("http://203.212.5.161/6288/simulator/game/phone-win.gif"));   
                  }   
                  catch(MalformedURLException   _ex)   {   }   
                  ac_you   =   getAudioClip(getCodeBase(),   "Ok01.au");   
                  ac_phone   =   getAudioClip(getCodeBase(),   "Ok04.au");   
          }   
    
          public   void   mouseDOWNThis(Event   event)   
          {   
                  if(playerdo)   
                          xiazi.put(event.x,   event.y);   
          }   
    
          public   void   paint(Graphics   g)   
          {   
                  super.paint(g);   
                  setBackground(new   Color(150,   185,   96));   
                  g.clearRect(0,   0,   GRIDSUM   *   GRIDWIDTH   +   5,   GRIDSUM   *   GRIDWIDTH   +   5);   
                  g.translate(5,   5);   
                  for(int   i   =   0;   i   <   GRIDSUM;   i++)   
                  {   
                          g.drawLine(0,   i   *   GRIDWIDTH,   (GRIDSUM   -   1)   *   GRIDWIDTH,   i   *   GRIDWIDTH);   
                          g.drawLine(i   *   GRIDWIDTH,   0,   i   *   GRIDWIDTH,   (GRIDSUM   -   1)   *   GRIDWIDTH);   
                  }   
    
                  for(int   j   =   0;   j   <   GRIDSUM;   j++)   
                  {   
                          for(int   k   =   0;   k   <   GRIDSUM;   k++)   
                                  drawQi(g,   j,   k,   QiPan[j][k]);   
    
                  }   
    
                  int   l   =   xy.x;   
                  int   i1   =   xy.y;   
                  if(l   >   0   &&   i1   >   0   &&   who   !=   1)   
                  {   
                          g.setColor(Color.black);   
                          g.drawLine(l   *   GRIDWIDTH   -   3,   i1   *   GRIDWIDTH   -   3,   l   *   GRIDWIDTH   +   3,   i1   *   GRIDWIDTH   +   3);   
                          g.drawLine(l   *   GRIDWIDTH   -   3,   i1   *   GRIDWIDTH   +   3,   l   *   GRIDWIDTH   +   3,   i1   *   GRIDWIDTH   -   3);   
                  }   
                  if(scHong   >=   5)   
                  {   
                          g.drawImage(image_you,   0,   0,   this);   
                          if(!haveWin)   
                          {   
                                  ac_you.play();   
                                  haveWin   =   true;   
                          }   
                  }   else   
                  if(scHei   >=   5)   
                  {   
                          g.drawImage(image_phone,   0,   40,   this);   
                          if(!haveWin)   
                          {   
                                  ac_phone.play();   
                                  haveWin   =   true;   
                          }   
                  }   
          }   
    
          int   random(int   i)   
          {   
                  return   (int)Math.floor(Math.random()   *   (double)i);   
          }   
    
          public   void   run()   
          {   
                  for(;   Thread.currentThread()   ==   LoopThread;   xiazi.get(xy))   
                  {   
                          ClearPan();   
                          repaint();   
                          playing   =   true;   
                          who   =   (byte)(Math.abs(rd.nextInt())   %   2   +   1);   
                          for(passes   =   0;   playing   &&   passes   <   2;)   
                          {   
                                  if(steps   <   ((GRIDSUM   *   GRIDSUM)   /   100)   *   80)   
                                  {   
                                          passes   =   0;   
                                          if(who   ==   1)   
                                          {   
                                                  if(scHong   ==   0   &&   scHei   ==   0)   
                                                  {   
                                                          xy.x   =   7;   
                                                          xy.y   =   7;   
                                                  }   else   
                                                  {   
                                                          xiazi.get(xy);   
                                                  }   
                                                  for(;   DoAStep(xy.x,   xy.y,   who)   ==   0;   xiazi.get(xy));   
                                                  scHong   =   CalcZi(xy.x,   xy.y,   who);   
                                                  FreshRec(xy.x,   xy.y);   
                                                  steps++;   
                                          }   else   
                                          {   
                                                  if(scHong   ==   0   &&   scHei   ==   0)   
                                                  {   
                                                          xy.x   =   7;   
                                                          xy.y   =   7;   
                                                  }   else   
                                                  {   
                                                          CPUDo(xy,   who);   
                                                  }   
                                                  for(;   DoAStep(xy.x,   xy.y,   who)   ==   0;   CPUDo(xy,   who));   
                                                  scHei   =   CalcZi(xy.x,   xy.y,   who);   
                                                  FreshRec(xy.x,   xy.y);   
                                                  steps++;   
                                          }   
                                  }   else   
                                  {   
                                          passes   =   2;   
                                  }   
                                  if(scHong   >=   5   ||   scHei   >=   5)   
                                          playing   =   false;   
                                  repaint();   
                                  who   =   (byte)((1   -   (who   -   1))   +   1);   
                                  Thread.yield();   
                          }   
    
                          if(scHong   >=   5)   
                          {   
                                  Status   =   "red   win";   
                                  LoseTimes++;   
                          }   else   
                          if(scHei   >=   5)   
                          {   
                                  Status   =   "black   win";   
                                  if(LoseTimes   >   0)   
                                          LoseTimes--;   
                          }   else   
                          {   
                                  Status   =   "notknow!";   
                          }   
                          repaint();   
                  }   
    
          }   
    
          public   void   start()   
          {   
                  if(LoopThread   ==   null)   
                          LoopThread   =   new   Thread(this,   "wbqloop");   
                  LoopThread.setPriority(1);   
                  LoopThread.start();   
          }   
    
          public   void   stop()   
          {   
                  LoopThread   =   null;   
          }   
    
          public   void   update(Graphics   g)   
          {   
                  paint(g);   
          }   
  }   
    

























⌨️ 快捷键说明

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