1. 问题描述
如果让你做个联机《五子棋》游戏,你会怎么存储棋盘上的棋子信息呢?
我的意思是,根据你存储的这些信息,就可以知道:
- 谁是黑棋?谁是白棋?
- 现在游戏结束了吗?若游戏结束,谁赢了?若没结束,现在该谁下棋了?
- 如果游戏支持悔棋,现在有人在请求悔棋吗?是谁在请求?
- 如果游戏支持认输,重新审视是否满足第2点。
- 当前场上棋子的分布。
请你自己先思考一下,再看下文的解决方案。
2. 解决方案
2.1 谁黑谁白
优点 | 缺点 | 适用范围 | |
---|---|---|---|
方案一:用1个变量标识你是哪个玩家;再用1个变量标识哪个玩家是黑棋。 | 有玩家号码标识,可扩展性好 | 游戏其它功能需要跟玩家编号有关联时可用该方案。 | |
方案二:用1个变量标识你是黑棋或白棋。 | 只需要1位(bit)即可 | 因为玩家没有固定的玩家号码,所以可扩展性较差 | 不做扩展功能,只做最简洁的联机五子棋时可用该方案。 |
两个方案都是可以的,只是需要看实际场景。如果你只想做个简单的五子棋,用方案二就够了。如果考虑扩展性,推荐方案一。