1

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

国际象棋游戏包括特殊运动{捕获,过路,晋级,易位,将死,相持}

用户通过说明开始位置和结束位置与游戏进行交互。例如 e1 g1。就是这样,一行。

我试图充分利用面向对象设计的特权。但只是为了这个要求。实施状态模式值得吗?由于用户只输入命令,游戏不应要求用户在其后做出任何其他决定。

编辑:我很抱歉没有说清楚。我感到困惑的是,是在游戏控制级别实现状态,如下图:在此处输入图像描述还是游戏块级别:在此处输入图像描述

4

2 回答 2

2

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

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

于 2013-03-24T08:28:31.517 回答
0

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

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

编辑:

对于 UI 国际象棋应用程序,我能想到的一个好处是,如果您希望专门查看某些特定状态的外观,例如:当出现检查状态时,在国王上放置一个红色方块。

于 2013-03-24T08:32:12.747 回答