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

📄 blackvswhite.java

📁 Java Applet实例编程.rar
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
        break;
      }
      else
        ++num8;
    }
    if( num6 != 0 )
    {
      for( num9 = num2 + 1; num9 < DIM; ++num9 )
      {
        num7 = num1 * DIM + num9;
        if( grid[num7] == num4 )
          grid[num7] = num5;
        else if( grid[num7] == num3 )
          break;
      }
    }
    num6 = 0;
    num9 = num2 - 1;
    while( num9 >= 0 )
    {
      num7 = num1 * DIM + num9;
      if( grid[num7] != num4 )
      {
        if( grid[num7] == num3 )
          num6 = 1;
        break;
      }
      else
        --num9;
    }
    if( num6 != 0 )
    {
      for( num10 = num2 - 1; num10 >= 0; --num10 )
      {
        num7 = num1 * DIM + num10;
        if( grid[num7] == num4 )
          grid[num7] = num5;
        else if( grid[num7] == num3 )
          break;
      }
    } 
    num6 = 0;
    num10 = num1 + 1;
    while( num10 < DIM )
    {
      num7 = num10 * DIM + num2;
      if( grid[num7] != num4 )
      {
        if( grid[num7] == num3 )
          num6 = 1;
        break;
      }
      else
        ++num10;
    }
    if( num6 != 0 )
    {
      for( num11 = num1 + 1; num11 < DIM; ++num11 )
      {
        num7 = num11 * DIM + num2;
        if( grid[num7] == num4 )
          grid[num7] = num5;
        else if( grid[num7] == num3 )
          break;
      }
    }
    num6 = 0;
    num11 = num1 - 1;
    while( num11 >= 0 )
    {
  	  num7 = num11 * DIM + num2;
    	if( grid[num7] != num4 )
    	{
     		if( grid[num7] == num3 )
        	num6 = 1;
	      break;
  	  }
    	else
      	--num11;
  	}
    if( num6 != 0 )
    {
      for( num12 = num1 - 1; num12 >= 0; --num12 )
      {
        num7 = num12 * DIM + num2;
        if( grid[num7] == num4 )
     		  grid[num7] = num5;
        if( grid[num7] == num3 )
          break;
      }
    }
    num6 = 0;
    num12 = num2 + 1;
    num13 = num1 - 1;
    while( num12 < DIM && num13 >= 0 )
    {
      num7 = num13 * DIM + num12;
      if( grid[num7] != num4 )
      {
        if( grid[num7] == num3 )
          num6 = 1;
        break;
      }
      else
      {
        ++num12;
        --num13;
      }
    }
    if( num6 != 0 )
    {
      num14 = num2 + 1;
      for( num15 = num1 - 1; num14 < DIM && num15 >= 0; --num15 )
      {
        num7 = num15 * DIM + num14;
        if( grid[num7] == num4 )
          grid[num7] = num5;
        if( grid[num7] == num3 )
          break;
        ++num14;
      }
    }
    num6 = 0;
    num14 = num2 + 1;
    num15 = num1 + 1;
    while( num14 < DIM && num15 < DIM )
    {
      num7 = num15 * DIM + num14;
      if( grid[num7] != num4 )
      {
        if( grid[num7] == num3 )
          num6 = 1;
        break;
      }
      else
      {
        ++num14;
        ++num15;
      }
    }
    if( num6 != 0 )
    {
      num16 = num2 + 1;
      for( num17 = num1 + 1; num16 < DIM && num17 < DIM; ++num17 )
      {
        num7 = num17 * DIM + num16;
        if( grid[num7] == num4 )
          grid[num7] = num5;
        if( grid[num7] == num3 )
          break;
        ++num16;
      }
    }
    num6 = 0;
    num16 = num2 - 1;
    num17 = num1 - 1;
    while( num16 >= 0 && num17 >= 0 )
    {
      num7 = num17 * DIM + num16;
      if( grid[num7] != num4 )
      {
        if( grid[num7] == num3 )
          num6 = 1;
        break;
      }
      else
      {
        --num16;
        --num17;
      }
    }
    if( num6 != 0 )
    {
      num18 = num2 - 1;
      for( num19 = num1 - 1; num18 >= 0 && num19 >= 0; --num19 )
      {
        num7 = num19 * DIM + num18;
        if( grid[num7] == num4 )
          grid[num7] = num5;
        if( grid[num7] == num3 )
          break;
        --num18;
      }
    }
    num6 = 0;
    num18 = num2 - 1;
    num19 = num1 + 1;
    while( num18 >= 0 && num19 < DIM )
    {
      num7 = num19 * DIM + num18;
      if( grid[num7] != num4 )
      {
        if( grid[num7] == num3 )
          num6 = 1;
        break;
      }
      else
      {
        --num18;
        ++num19;
      }
    }
    if( num6 != 0 )
    {
      int num20 = num2 - 1;
      int num21;
      for( num21 = num1 + 1; num20 >= 0 && num21 < DIM; ++num21 )
      {
        num7 = num21 * DIM + num20;
        if( grid[num7] == num4 )
          grid[num7] = num5;
        if( grid[num7] == num3 )
          break;
        --num20;
      }
    }
    animating = true;
  }

  public void checkScore()
  {
    int num2;

    redScore = blueScore = 0;
    for( num2 = 0; num2 < DIM; ++num2 )
    {
      int num3;
      for( num3 = 0; num3 < DIM; ++num3 )
      {
        int num1 = num2 * DIM + num3;

        if( grid[num1] == 2 || grid[num1] == 5 )
          ++redScore;
        else if( grid[num1] == 3 || grid[num1] == 4 )
          ++blueScore;
      }
    }
  }

  public synchronized void paint(Graphics g)
  {
    if( !imageTracker.checkAll() )
    {
      g.setColor( getForeground() );
      g.drawString( "Loading images", 50, 50 );
    }
    else
    {
      int num2;
      int num3;
      int num4;
      int num5;
      int num6;

      buttonHeight = button.getSize().height + button.getLocation().y * 2;
      getFontMetrics( f );
      num2 = getSize().width - fontHeight * 3 - buttonHeight;
      num3 = getSize().height - fontHeight * 3 - buttonHeight;
      if( num2 != boardSize )
      {
        if( num2 > num3 )
          boardSize = num3 / DIM * DIM;
        else
          boardSize = num2 / DIM * DIM;
      }
      if( boardSize > 400 )
        boardSize = 400;
      offScrGraphics.setColor(getBackground() );
      offScrGraphics.fillRect( 0, 0, getSize().width, getSize().height );
      offScrGraphics.setColor( Color.white );
      offScrGraphics.fillRect( 0, 0, boardSize, boardSize );
      num4 = boardSize / DIM;
      offScrGraphics.setColor( Color.red );
      for( num5 = 0; num5 < DIM; ++num5 )
      {
        offScrGraphics.drawLine( 0, num5 * num4, boardSize - 1, num5 * num4 );
        for( num6 = 0; num6 < DIM; ++num6 )
        {
          offScrGraphics.drawLine( num6 * num4, 0, num6 * num4, boardSize - 1 );
          if( grid[num5 * DIM + num6] == 2 )
            offScrGraphics.drawImage( redImage, num6 * num4 + 1, num5 * num4 + 1, num4 - 2, num4 - 2, this );
          else if( grid[num5 * DIM + num6] == 3 )
            offScrGraphics.drawImage( blueImage, num6 * num4 + 1, num5 * num4 + 1, num4 - 2, num4 - 2, this );
        }
      }
      offScrGraphics.drawLine( boardSize - 1, 0, boardSize - 1, boardSize - 1 );
      offScrGraphics.drawLine( 0, boardSize - 1, boardSize - 1, boardSize - 1 );
      offScrGraphics.setColor( getForeground() );
      if( illegalMove )
        offScrGraphics.drawString( "下子非法,请重新下子!", button.getLocation().x, boardSize + fontAscent );
      else if( blueNotMoving )
        offScrGraphics.drawString( "Computer Pass", button.getLocation().x, boardSize + fontAscent );
      offScrGraphics.drawImage( redImage, button.getLocation().x, boardSize + fontHeight * 2 - fontAscent, fontAscent, fontAscent, this );
        offScrGraphics.drawString( "  玩家: " + (String.valueOf( redScore )), button.getLocation().x + fontAscent, boardSize + fontHeight * 2 );
      offScrGraphics.drawImage( blueImage, button.getLocation().x, boardSize + fontHeight * 3 - fontAscent, fontAscent, fontAscent, this );
      offScrGraphics.drawString( "  电脑: " + (String.valueOf( blueScore )), button.getLocation().x + fontAscent, boardSize + fontHeight * 3 );
      offScrGraphics.setColor( Color.white );
      num6 = 0;
      if( animating )
      {
        num6 = num4 - 2;
        while( num6 > 0 )
        {
          int num7;
          for( num7 = 0; num7 < DIM; ++num7 )
          {
            int num8;
            for( num8 = 0; num8 < DIM; ++num8 )
            {
              if( grid[num7 * DIM + num8] == 5 )
              {
                offScrGraphics.fillRect( num8 * num4 + 1, num7 * num4 + 1, num4 - 1, num4 - 1 );
                offScrGraphics.drawImage( blueImage, num8 * num4 + 1 + num4 / 2 - num6 / 2, num7 * num4 + 1 + num4 / 2 - num6 / 2, num6, num6, this );
                if( num6 <= 2 )
                  grid[num7 * DIM + num8] = 2;
              }
              else if( grid[num7 * DIM + num8] == 4 )
              {
                offScrGraphics.fillRect( num8 * num4 + 1, num7 * num4 + 1, num4 - 1, num4 - 1 );
                offScrGraphics.drawImage( redImage, num8 * num4 + 1 + num4 / 2 - num6 / 2, num7 * num4 + 1 + num4 / 2 - num6 / 2, num6, num6, this );
                if( num6 <= 2 )
                  grid[num7 * DIM + num8] = 3;
              }
            }
          }
          g.drawImage( offScrImage, button.getLocation().x, buttonHeight, this );
          num6 -= 3;
          try
          {
            Thread.sleep( 50L );
            continue;
          }
          catch( Exception unused9 )
          {
            continue;
          }
        }
        animating = false;
        paint( g );
      }
      if((redScore+blueScore)==DIM*DIM )
      {
      	if(redScore!=blueScore)
      		offScrGraphics.drawString((redScore>blueScore)?"You Win!":"You Lose!",button.getLocation().x, boardSize + fontAscent);
       	else
       		offScrGraphics.drawString("No One Win!",button.getLocation().x, boardSize + fontAscent);
      }
      g.drawImage( offScrImage, button.getLocation().x, buttonHeight, this );
    }
  }
   
  public synchronized void update(Graphics g)
  {
    paint( g );
  }
    
  public void actionPerformed(ActionEvent e)
  {
  	newGame();
  }
    
  public void mousePressed(MouseEvent e){}
  public void mouseClicked(MouseEvent e){}
  public void mouseEntered(MouseEvent e){}
  public void mouseExited(MouseEvent e){}
  public synchronized void mouseReleased(MouseEvent e)
  {
    int x=e.getX();
    int y=e.getY();
    if( imageTracker.checkID( 0, true ) )
    {
      int num4 = (x - button.getLocation().x) * DIM / boardSize;
      int num5 = (y - buttonHeight) * DIM / boardSize;
      if( num5 < DIM && num4 < DIM && grid[num5 * DIM + num4] == 0 )
      {
        illegalMove = false;
        if( isGood( num5, num4, 2, 3 ) <= 0 )
        {
          illegalMove = true;
          paint(getGraphics() );
          return;
        }
        else
        {
          grid[num5 * DIM + num4] = 2;
          change( num5, num4, 2, 3, 5 );
          checkScore();
          paint( getGraphics() );
          try
          {
            Thread.sleep( 1000L );
          }
          catch( Exception unused6 )
          {
          }
          blueMove();
          checkScore();
          paint( getGraphics() );
        }
      }
      else if( num5 < DIM && num4 < DIM && grid[num5 * DIM + num4] == 3 )
      {
        illegalMove = true;
        paint( getGraphics() );
        return;
      }
    }
    return;
  }  
}

⌨️ 快捷键说明

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