174 |
|
public synchronized void actionPerformed(ActionEvent e) { |
175 |
|
toggleDemoMode(); |
176 |
|
updateStatus(); |
177 |
– |
|
177 |
|
}}); |
178 |
|
|
179 |
|
undoButton.addActionListener(new ActionListener() { |
524 |
|
} |
525 |
|
|
526 |
|
public static boolean inBounds(int row, int col) { |
527 |
< |
return (0 <= row) && (row < RANKS) && (0 <= col) && (col < RANKS); |
527 |
> |
return (0 <= row) && (row < RANKS) && (0 <= col) && (col < RANKS); |
528 |
|
} |
529 |
|
|
530 |
|
// The representation |
551 |
|
long getGreen() { return green_; } |
552 |
|
|
553 |
|
public Player occupant(int row, int col) { |
554 |
< |
if ((0 <= row) && (row < RANKS) && (0 <= col) && (col < RANKS)) { |
554 |
> |
if ((0 <= row) && (row < RANKS) && (0 <= col) && (col < RANKS)) { |
555 |
|
long m = 1L << (row + col * RANKS); |
556 |
|
if ((blue_ & m) != 0L) return Player.Blue; |
557 |
|
else if ((green_ &m) != 0L) return Player.Green; |
561 |
|
return Player.Illegal; |
562 |
|
} |
563 |
|
|
564 |
< |
|
566 |
< |
// place a tile without taking opponent tiles |
564 |
> |
/** Places a tile without taking opponent tiles. */ |
565 |
|
public void occupy(Player player, int row, int col) { |
566 |
|
long m = 1L << (row + col * RANKS); |
567 |
|
long nm = ~m; |
585 |
|
green_ &= nm; |
586 |
|
} |
587 |
|
|
588 |
< |
// place a tile, taking all adjacent tiles of opponent |
588 |
> |
/** Places a tile, taking all adjacent tiles of opponent. */ |
589 |
|
public void take(Player player, int row, int col) { |
590 |
|
int k = row + col * RANKS; |
591 |
|
long dest = 1L << k; |