实施状态模式是简单的国际象棋游戏的良好设计选择吗?

时间:2013-03-24 08:22:14

标签: java design-patterns state chess

我正在尝试编写两个用户玩的离线无AI无GUI同步命令行象棋游戏(或者一个用户同时玩白色和黑色)。这意味着只有1个帖子。

国际象棋游戏包括特殊运动{捕获,通过,升级,铸造,将死,僵局}

用户通过陈述开始位置和结束位置来与游戏交互。例如e1 g1。这就是它,在一行中。

我正在努力获得面向对象设计的全部特权。但只是为了这个要求。 实施状态模式是否值得?由于用户只输入命令,因此游戏不应要求用户做出任何其他决定。

编辑:我为没有说清楚而道歉。令我困惑的是,是否在游戏控制级别实现状态,如图像:enter image description here或游戏块级别,如此图像:enter image description here

2 个答案:

答案 0 :(得分:2)

如果您不打算稍后改进游戏或在其中添加更多功能,则无需使其成为有状态。

但是如果有任何机会(低至 1%)以便将来工作,那么你最好让它成为有状态的。因为在新的上下文中重写功能总是更容易编写不必要的代码。

答案 1 :(得分:0)

使用状态将为cosnosle应用程序国际象棋游戏提供相同的好处,因为它将为您提供完整的UI应用程序。主要的好处是你可以跟踪允许的移动和游戏状态,就像你说的那样:casteling,en-passant,check,check-mate等。

游戏状态和可能的移动不受使用控制台应用程序,UI,分布式Web应用程序或其他任何事实的影响。它们与游戏的内部逻辑有关。

修改

对于UI国际象棋应用我可以想到的一个好处是,如果你想专注于ceratin状态的外观,例如: :当有检查状态时,在国王身上放一个红色方块。