2013-03-24 32 views
1

我想寫一個離線沒有AI沒有GUI同步的命令行國際象棋遊戲,兩個用戶玩(或一個用戶播放白色&黑色)。這意味着只有1個線程。正在實施狀態模式的簡單國際象棋遊戲的一個很好的設計選擇?

棋局包括特殊的運動捕捉{,順便,晉升,易位,擊破,僵持}

用戶通過聲明的起始位置和結束位置與遊戲互動。例如e1 g1。就是這樣,在一行中。

我正試圖獲得面向對象設計的全部特權。但僅僅是爲了這個要求。 是否實施值得的狀態模式?由於用戶只輸入命令,並且遊戲不應該要求用戶在其後做出任何其他決定。

編輯:我很抱歉沒有說清楚。我感到困惑的是,是否在遊戲控制級別執行狀態,如此圖像:enter image description here或遊戲塊級別喜歡這個圖像:enter image description here

+1

你想建模什麼狀態? – SomeWittyUsername 2013-03-24 08:25:15

+0

我只是碰巧找到這個圖片:https://kenai.com/attachments/wiki_images/chessgame/uml-states_pieces.png,我想也許是相關的。 – ssgao 2013-03-24 08:26:12

+0

http://programmers.stackexchange.com/也許這個問題更好的地方 – 2013-03-24 08:29:27

回答

2

如果您不打算稍後改進遊戲或添加更多功能那麼就沒有必要使它成爲有狀態的。

但是如果有機會(低至1%)未來的工作,那麼你最好使它有狀態。因爲編寫不必要的代碼在新的上下文中重寫功能總是更容易。

0

使用狀態將給你一個cosnosle應用程序象棋遊戲,因爲它會給你一個完整的UI應用程序相同的好處。主要好處是您可以跟蹤允許的移動和遊戲狀態,就像您所說的:casteling,en-passant,check,check-mate等。

遊戲狀態和可能的移動不受影響通過您使用控制檯應用程序,用戶界面,分佈式Web應用程序或其他任何事實。他們必須處理遊戲的內部邏輯。

編輯:我能想到的UI象棋應用

一個好處是,如果你想專注ceratin狀態,例如外觀:在有檢查狀態時在國王上放置一個紅色方塊。