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

本文探讨了在开发联机五子棋游戏中如何存储棋盘信息和管理游戏状态。提出了两种方案来确定黑白棋、游戏结束条件、悔棋与认输规则,并分析了场上棋子分布的空间效率。同时,介绍了状态机的设计,以实现各种游戏动作的转换。
最低0.47元/天 解锁文章
1137

被折叠的 条评论
为什么被折叠?



