TicTacToe游戏中可能出现的情况提问
TicTacToe游戏规则很简单,在一个3*3的方格中,游戏双方轮流占领其中的方格.当一方占有连续的3个方格时(水平\垂直或对角均可),则获胜,游戏结束。
Game类封装了本游戏用到的相关逻辑和算法,其中所有可能取胜的位置组合和所有可能成为平局的情况的代码不是很明白,向各位前辈请教,望赐教!
class Game
{
//所有可能取胜的位置组合
private final int[] WINS=
{
//水平排列
bit(0)|bit(1)|bit(2),
bit(3)|bit(4)|bit(5),
bit(6)|bit(7)|bit(8),
//垂直排列
bit(0)|bit(3)|bit(6),
bit(1)|bit(4)|bit(7),
bit(2)|bit(5)|bit(8),
//两个对角线
bit(0)|bit(4)|bit(8),
bit(2)|bit(4)|bit(6)
};
//所有可能成为平局的情况
private final int DRAWN_GAME=
bit(0)|bit(1)|bit(2)|
bit(3)|bit(4)|bit(5)|
bit(6)|bit(7)|bit(8);
......
private int bit(int i)
{
return 1<<i;
}
}
请问:数组WINS和常整形变量DRAWN_GAME为什么可以分别表示可能出现的取胜组合和平局情况?