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

📄 othello.java

📁 小游戏,,,也挺好的
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
        break;
      }
      else
        ++int8;
    }
    if( int6 != 0 )
    {
      for( int9 = int2 + 1; int9 < DIM; ++int9 )
      {
        int7 = int1 * DIM + int9;
        if( grid[int7] == int4 )
          grid[int7] = int5;
        else if( grid[int7] == int3 )
          break;
      }
    }
    int6 = 0;
    int9 = int2 - 1;
    while( int9 >= 0 )
    {
      int7 = int1 * DIM + int9;
      if( grid[int7] != int4 )
      {
        if( grid[int7] == int3 )
          int6 = 1;
        break;
      }
      else
        --int9;
    }
    if( int6 != 0 )
    {
      for( int10 = int2 - 1; int10 >= 0; --int10 )
      {
        int7 = int1 * DIM + int10;
        if( grid[int7] == int4 )
          grid[int7] = int5;
        else if( grid[int7] == int3 )
          break;
      }
    } 
    int6 = 0;
    int10 = int1 + 1;
    while( int10 < DIM )
    {
      int7 = int10 * DIM + int2;
      if( grid[int7] != int4 )
      {
        if( grid[int7] == int3 )
          int6 = 1;
        break;
      }
      else
        ++int10;
    }
    if( int6 != 0 )
    {
      for( int11 = int1 + 1; int11 < DIM; ++int11 )
      {
        int7 = int11 * DIM + int2;
        if( grid[int7] == int4 )
          grid[int7] = int5;
        else if( grid[int7] == int3 )
          break;
      }
    }
    int6 = 0;
    int11 = int1 - 1;
    while( int11 >= 0 )
    {
  	  int7 = int11 * DIM + int2;
    	if( grid[int7] != int4 )
    	{
     		if( grid[int7] == int3 )
        	int6 = 1;
	      break;
  	  }
    	else
      	--int11;
  	}
    if( int6 != 0 )
    {
      for( int12 = int1 - 1; int12 >= 0; --int12 )
      {
        int7 = int12 * DIM + int2;
        if( grid[int7] == int4 )
     		  grid[int7] = int5;
        if( grid[int7] == int3 )
          break;
      }
    }
    int6 = 0;
    int12 = int2 + 1;
    int13 = int1 - 1;
    while( int12 < DIM && int13 >= 0 )
    {
      int7 = int13 * DIM + int12;
      if( grid[int7] != int4 )
      {
        if( grid[int7] == int3 )
          int6 = 1;
        break;
      }
      else
      {
        ++int12;
        --int13;
      }
    }
    if( int6 != 0 )
    {
      int14 = int2 + 1;
      for( int15 = int1 - 1; int14 < DIM && int15 >= 0; --int15 )
      {
        int7 = int15 * DIM + int14;
        if( grid[int7] == int4 )
          grid[int7] = int5;
        if( grid[int7] == int3 )
          break;
        ++int14;
      }
    }
    int6 = 0;
    int14 = int2 + 1;
    int15 = int1 + 1;
    while( int14 < DIM && int15 < DIM )
    {
      int7 = int15 * DIM + int14;
      if( grid[int7] != int4 )
      {
        if( grid[int7] == int3 )
          int6 = 1;
        break;
      }
      else
      {
        ++int14;
        ++int15;
      }
    }
    if( int6 != 0 )
    {
      int16 = int2 + 1;
      for( int17 = int1 + 1; int16 < DIM && int17 < DIM; ++int17 )
      {
        int7 = int17 * DIM + int16;
        if( grid[int7] == int4 )
          grid[int7] = int5;
        if( grid[int7] == int3 )
          break;
        ++int16;
      }
    }
    int6 = 0;
    int16 = int2 - 1;
    int17 = int1 - 1;
    while( int16 >= 0 && int17 >= 0 )
    {
      int7 = int17 * DIM + int16;
      if( grid[int7] != int4 )
      {
        if( grid[int7] == int3 )
          int6 = 1;
        break;
      }
      else
      {
        --int16;
        --int17;
      }
    }
    if( int6 != 0 )
    {
      int18 = int2 - 1;
      for( int19 = int1 - 1; int18 >= 0 && int19 >= 0; --int19 )
      {
        int7 = int19 * DIM + int18;
        if( grid[int7] == int4 )
          grid[int7] = int5;
        if( grid[int7] == int3 )
          break;
        --int18;
      }
    }
    int6 = 0;
    int18 = int2 - 1;
    int19 = int1 + 1;
    while( int18 >= 0 && int19 < DIM )
    {
      int7 = int19 * DIM + int18;
      if( grid[int7] != int4 )
      {
        if( grid[int7] == int3 )
          int6 = 1;
        break;
      }
      else
      {
        --int18;
        ++int19;
      }
    }
    if( int6 != 0 )
    {
      int int20 = int2 - 1;
      int int21;
      for( int21 = int1 + 1; int20 >= 0 && int21 < DIM; ++int21 )
      {
        int7 = int21 * DIM + int20;
        if( grid[int7] == int4 )
          grid[int7] = int5;
        if( grid[int7] == int3 )
          break;
        --int20;
      }
    }
    animating = true;
  }

  public void checkScore()
  {
    int int2;

    redScore = blueScore = 0;
    for( int2 = 0; int2 < DIM; ++int2 )
    {
      int int3;
      for( int3 = 0; int3 < DIM; ++int3 )
      {
        int int1 = int2 * DIM + int3;

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

  public synchronized void paint(Graphics g)
  {
    if( !imageTracker.checkAll() )
    {
      g.setColor( getForeground() );
      g.drawString( "Loading images", 50, 50 );
    }
    else
    {
      int int2;
      int int3;
      int int4;
      int int5;
      int int6;

      buttonHeight = button.getSize().height + button.getLocation().y * 2;
      getFontMetrics( f );
      int2 = getSize().width - fontHeight * 3 - buttonHeight;
      int3 = getSize().height - fontHeight * 3 - buttonHeight;
      if( int2 != boardSize )
      {
        if( int2 > int3 )
          boardSize = int3 / DIM * DIM;
        else
          boardSize = int2 / 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 );
      int4 = boardSize / DIM;
      offScrGraphics.setColor( Color.red );
      for( int5 = 0; int5 < DIM; ++int5 )
      {
        offScrGraphics.drawLine( 0, int5 * int4, boardSize - 1, int5 * int4 );
        for( int6 = 0; int6 < DIM; ++int6 )
        {
          offScrGraphics.drawLine( int6 * int4, 0, int6 * int4, boardSize - 1 );
          if( grid[int5 * DIM + int6] == 2 )
            offScrGraphics.drawImage( redImage, int6 * int4 + 1, int5 * int4 + 1, int4 - 2, int4 - 2, this );
          else if( grid[int5 * DIM + int6] == 3 )
            offScrGraphics.drawImage( blueImage, int6 * int4 + 1, int5 * int4 + 1, int4 - 2, int4 - 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( "Illegal Move", 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( " You: " + (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( " Computer: " + (String.valueOf( blueScore )), button.getLocation().x + fontAscent, boardSize + fontHeight * 3 );
      offScrGraphics.setColor( Color.white );
      int6 = 0;
      if( animating )
      {
        int6 = int4 - 2;
        while( int6 > 0 )
        {
          int int7;
          for( int7 = 0; int7 < DIM; ++int7 )
          {
            int int8;
            for( int8 = 0; int8 < DIM; ++int8 )
            {
              if( grid[int7 * DIM + int8] == 5 )
              {
                offScrGraphics.fillRect( int8 * int4 + 1, int7 * int4 + 1, int4 - 1, int4 - 1 );
                offScrGraphics.drawImage( blueImage, int8 * int4 + 1 + int4 / 2 - int6 / 2, int7 * int4 + 1 + int4 / 2 - int6 / 2, int6, int6, this );
                if( int6 <= 2 )
                  grid[int7 * DIM + int8] = 2;
              }
              else if( grid[int7 * DIM + int8] == 4 )
              {
                offScrGraphics.fillRect( int8 * int4 + 1, int7 * int4 + 1, int4 - 1, int4 - 1 );
                offScrGraphics.drawImage( redImage, int8 * int4 + 1 + int4 / 2 - int6 / 2, int7 * int4 + 1 + int4 / 2 - int6 / 2, int6, int6, this );
                if( int6 <= 2 )
                  grid[int7 * DIM + int8] = 3;
              }
            }
          }
          g.drawImage( offScrImage, button.getLocation().x, buttonHeight, this );
          int6 -= 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 int4 = (x - button.getLocation().x) * DIM / boardSize;
      int int5 = (y - buttonHeight) * DIM / boardSize;
      if( int5 < DIM && int4 < DIM && grid[int5 * DIM + int4] == 0 )
      {
        illegalMove = false;
        if( howGood( int5, int4, 2, 3 ) <= 0 )
        {
          illegalMove = true;
          paint(getGraphics() );
          return;
        }
        else
        {
          grid[int5 * DIM + int4] = 2;
          turnPlys( int5, int4, 2, 3, 5 );
          checkScore();
          paint( getGraphics() );
          try
          {
            Thread.sleep( 1000L );
          }
          catch( Exception unused6 )
          {
          }
          blueMove();
          checkScore();
          paint( getGraphics() );
        }
      }
      else if( int5 < DIM && int4 < DIM && grid[int5 * DIM + int4] == 3 )
      {
        illegalMove = true;
        paint( getGraphics() );
        return;
      }
    }
    return;
  }  
}

⌨️ 快捷键说明

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