📄 blackvswhite.java
字号:
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 + -