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为什么可以分别表示可能出现的取胜组合和平局情况?
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为什么可以分别表示可能出现的取胜组合和平局情况?
多谢你的回复,不过,你说的表示我也明白,可能是我没有说清楚.我不明白的地方是:为什么这样就可以表示相应位置旗子,原理是什么?