1. 程式人生 > >《結對——五子棋遊戲——結對項目總結》

《結對——五子棋遊戲——結對項目總結》

算法 方案 模型 遊戲 出現 進度 完成後 其他 棋盤

。 五子棋遊戲項目進度

一:需求分析

1.總體分析:軟件需求分析是軟件開發周期的第一個階段,也是關系到軟件開發成敗的關鍵一步。對於任何一個軟件而言,需求分析工作都是至關重要的一步。只有通過軟件需求分析,才能把軟件的功能和性能由總體的概念性描述轉化為具體的規格說明,進而建立軟件開發的基礎。實踐表明,需求分析工作進行得好壞,在很大程度上決定了軟件開發的成敗。 軟件需求分析的任務是:讓用戶和開發者共同明確將要開發的是一個什麽樣的軟件。具體而言,就是通過對問題及其環境的理解、分析和綜合,建立邏輯模型,完成新軟件的邏輯方案設計。

2.初始化:首先,建立盤面數組Table[15][15]、對戰雙方的棋型表Computer[15][15][4]和Player[15][15][4]並將它們清零以備使用;然後初始化顯示器、鍵盤、鼠等輸入輸出設備並在屏幕上畫出棋盤(棋盤可以不顯示)。

3.主循環控制模塊:控制下棋順序,當輪到某方下子時,負責將程序轉到相應的模塊中去,主要擔當一個調度者的角色。

4.玩家下子:當輪到玩家下時,您通過鍵盤或鼠標在棋盤上落子,程序會根據該點的位置,在Table[15][15]數組的相應地方記錄‘2’,以表明該子是玩家下的。

5.盤面分析填寫棋型表:您在下五子棋時,一定會先根據棋盤上的情況,找出當前最重要的一些點位,如“活三”、“沖四”等;然後再在其中選擇落子點。先來分析己方的棋型,我們棋盤左上角出發,向右逐行搜索,當遇到一個空白點時,以它為中心向左挨個查找,如果遇到己方的子則記錄然後繼續,如果遇到對方的子、空白點或邊界就停止查找。左邊完成後再向右進行同樣的操作;最後把左右兩邊的記錄合並起來,得到的數據就是該點橫向上的棋型,然後把棋型的編號填入到Computer[x][y][n]中就行了(x、y代表坐標,n=0、1、2、3分別代表橫、豎、左斜、右斜四個方向)。而其他三個方向的棋型也可用同樣的方法得到,當搜索完整張棋盤後,己方棋型表也就填寫完畢了。然後再用同樣的方法填寫對方棋型表。註意:所有棋型的編號都要事先定義好,越重要的號數越大!

6.對方下子:有了上面填寫的兩張棋型表,就是遍歷棋型表Computer[15][15][4]Player[15][15][4]找出其中數值最大的一點,在該點下子即可。但這種算法的弱點非常明顯,只顧眼前利益,不能顧全大局,這就和許多五子棋初學者一樣犯了“目光短淺”的毛病。 如果在這兒下子將會形成對手不得不防守的棋型(例如:‘沖四’、‘活三’);那麽下一步對手就會照您的思路下子來防守您,如此一來便完成了第一步的預測。這時再調用模塊4對預測後的棋進行盤面分析,如果出現了‘四三’、‘雙三’或‘雙四’等制勝點,那麽己方就可以獲勝了(當然對黑棋而言‘雙三’、‘雙四’是禁手,另當別論);否則照同樣的方法向下分析,就可預測出第二步、第三步??

等一等,要是盤面上沒有對手必須防的棋型,哪該怎麽辦呢?進攻不成的話就得考慮防守了,將自己和對手調換一下位置,然後用上面的方法來預測對手的棋,這樣既可以防住對手巧妙的攻擊,又能待機發動反擊,何樂而不為呢!

7.勝負判斷:務須多言,某方形成五子連即獲勝;若黑棋走出‘雙三’、‘雙四’或長連即以禁手判負。

《結對——五子棋遊戲——結對項目總結》