本模塊為游戲規則和界面設計
計劃於
完成
目前進展順利
預計將提前一天完成
本模塊分兩部分 )界面設計
准備需要的圖片文件等
設計圖形界面
該部分設計已完成
耗費時間兩天
主要類
MainFrame
游戲窗口
初步定為游戲本身
將擁有三個邏輯成員
UI
游戲界面
只負責顯示
(完成)
GameMaster
游戲管理者
負責游戲秩序
監控玩家行為及修改游戲狀態
StateObserver
游戲狀態觀察者
觀察游戲狀態並在UI上顯示
(完成)
)游戲規則設計
設計游戲規則及ChessPlayer和游戲間的互動
主要類
GameMaster
游戲管理者
負責游戲秩序
監控玩家行為及修改游戲狀態
當玩家為人類時
監控若干ChessGrid及三個輔助JButton
當玩家
為電腦AI時
監控AI得到落子位置
根據落子的位置及規則
做出相應的行為
最後修改游戲狀態GameState
包括記錄棋譜和切換用戶
由
GameState激發其觀察者StateObserver修改狀態顯示
其擁有的域為
ChessGrid[][][]
棋格數組
JButton[]
輔助按鈕
GameState
游戲狀態
擁有兩個玩家
或為人類或為AI;
GameMaster部分算法
mouseClicked() {
//handle mouse event
//假如落子位置合法
關閉ChessGrid監控
status = checkStep(current);
//假如需要輔助輸入
開啟輔助Button監控;return;
nextPlayer();
}
actionPerformed() {
handle(Decision);
nextPlayer();
}
nextPlayer() {
//ready for next player
GameState
addStep(current
Decision);
GameState
nextPlayer();
while(!GameState
isHumanTurn()) {
decision = GameState
getNextStep(current);
status = checkStep(current);
//假如需要輔助輸入
因為AI在計算current時必定已考慮好如何輸入
handle(decision);
GameState
addStep(current
Decision);
GameState
nextPlayer();
}
//開啟ChessGrid監控
准備接受人類輸入
}
GameState
為被觀察者
擁有兩個ChessPlayer
nextPlayer()中
首先notifyObserver()修改狀態
然後指向下一個ChessPlayer
在
getNextStep()中
調用當前ChessPlayer提供的getNextStep()方法
獲取AI計算結果
StateObserver
為觀察者
觀察GameState的狀態並做出相應修改
目前剩余的任務有 )GameMaster中需要判斷游戲結束
游戲結束條件將在下列條件中選擇
a)無法繼續落子判和
b)一方子全滅判輸
c)一方落子時間超過期限判輸
d)一方三子連珠判贏
)GameMaster中增加時間限制
)通過MainFrame中的菜單對游戲進行控制
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26976.html