我试图写一个离线,没有AI,没有GUI同步命令行国际象棋游戏,两个用户玩(或者一个用户同时玩白色和黑色)。这意味着只有一个线程。
国际象棋游戏包括特殊动作{捕捉、传、升、掷、刑、相持}
用户通过声明开始位置和结束位置与游戏进行交互。例如e1 g1.就这样,一句话。
我试图充分利用面向对象设计的特权。但仅仅是为了这个要求。实现状态模式值得吗?由于用户只输入命令和游戏,因此不应要求用户在此之后作出任何其他决定。
编辑:很抱歉我没说清楚。我所困惑的是是否要在游戏控制级别上实现像这样的状态:

或者像这张图片那样的棋子级别:

发布于 2013-03-24 08:28:31
如果你不打算以后改进游戏,或者在游戏中添加更多的功能,那么就没有必要让它变得有状态了。
但是,如果有任何机会(如1%)的未来工作,那么你最好使它有状态。因为编写不必要的代码总是更容易在新的上下文中重写功能。
发布于 2013-03-24 08:32:12
使用状态将给您提供相同的好处,在一个宇宙应用程序国际象棋游戏,它将为您提供一个完整的UI应用程序。主要的好处是你可以跟踪允许的移动和游戏状态,就像你已经说过的:弃球,传球,检查,检查伴侣等等。
游戏状态和可能的动作不受使用控制台应用程序、UI、分布式web应用程序或其他任何东西的影响。他们与游戏的内在逻辑有关。
编辑:
对于UI国际象棋应用程序,我可以想到的一个好处是,如果您希望专门化ceratin状态的外观,例如:当有检查状态时,在国王上放一个红色的方块。
https://stackoverflow.com/questions/15596504
复制相似问题