TicTacToe游戏中可能出现的情况提问

whp320 2005-11-12 07:37:51
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为什么可以分别表示可能出现的取胜组合和平局情况?
...全文
99 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
saighost 2005-11-16
  • 打赏
  • 举报
回复
什么是原理?编程还有原理一说?我真不清楚你问的是哪方面。
而且它表示的是位置不是棋子,而且这是由 你规定的棋盘样式 所要求的。
我会再给你更详细的说明的。
gemouzhi 2005-11-14
  • 打赏
  • 举报
回复
是不是deitail的书?他们父子很喜欢用这个做例子。
whp320 2005-11-14
  • 打赏
  • 举报
回复
不是吧!
就不能简单的帮忙解释一下吗?
saighost 2005-11-14
  • 打赏
  • 举报
回复
你是看了电脑爱好者上的教程吗?
那上面讲的清楚,第几期我也记不太清楚了。
还是你没看懂源程序?
whp320 2005-11-14
  • 打赏
  • 举报
回复
怎么没有人知道吗?
whp320 2005-11-13
  • 打赏
  • 举报
回复
saighost(光仔来了) :
多谢你的回复,不过,你说的表示我也明白,可能是我没有说清楚.我不明白的地方是:为什么这样就可以表示相应位置旗子,原理是什么?
saighost 2005-11-12
  • 打赏
  • 举报
回复
数组wins里表示所有可能取胜的情况时一方棋子所在的位置,判断在这几个位置是不是一方的棋子,来分辨结果。bit(0)表示在棋盘最左上角的位置,依此类推。

62,629

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧