为了好玩,我试着把我儿子最喜欢的棋盘游戏之一写成一个软件。最终,我希望在它的基础上构建一个 WPF UI,但是现在我正在构建一个机器来模拟游戏及其规则。
当我这样做的时候,我不断看到一些问题,我认为这些问题在许多棋盘游戏中都很常见,也许其他人已经比我更好地解决了这些问题。
(注意人工智能玩的游戏,以及高性能的模式对我来说并不感兴趣。)
到目前为止,我的模式是:
几种不可变的类型代表游戏框中的实体,例如骰子、跳棋、卡片、棋盘、棋盘上的空格、钱等。
每个玩家的一个对象,其中包含玩家的资源(如金钱,分数) ,他们的名字等。
代表游戏状态的物体: 玩家,轮到谁,棋子在棋盘上的布局等等。
管理转向序列的状态机。例如,许多游戏都有一个小型的赛前游戏,每个玩家投掷,看看谁先走; 这是开始状态。当一个玩家的回合开始时,他们首先滚动,然后他们移动,然后他们必须在原地跳舞,然后其他玩家猜出他们是什么品种的鸡,然后他们得分。
有什么我可以利用的先进技术吗?
编辑: 最近我意识到游戏状态可以分为两类:
游戏神器状态 强 > 。“我有10美元”或“我的左手是蓝色的”。
游戏序列状态 强 > 。“我掷了两次双骰,下一次我就进监狱了。”。在这里,状态机可能是有意义的。
编辑: 我在这里真正寻找的是 最好的方式来实现多玩家回合游戏,如国际象棋、拼字游戏或大富翁。我确信我可以创建这样一个游戏,只是通过工作,通过它开始到结束,但是,像其他设计模式,可能有一些方法,使事情进行得更顺利,没有仔细研究是不明显的。这正是我所希望的。