国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

JAVA模塊游戲規則和界面設計(一)

2019-11-18 11:58:32
字體:
來源:轉載
供稿:網友

  本模塊為游戲規則和界面設計,計劃于2005.3.9完成。目前進展順利,預計將提前一天完成。
  
  本模塊分兩部分:
  
  1)界面設計。預備需要的圖片文件等;設計圖形界面;該部分設計已完成,耗費時間兩天。主要類:
  
  MainFrame:游戲窗口,初步定為游戲本身,將擁有三個邏輯成員:
  
  UI:游戲界面,只負責顯示;(完成)
  
  GameMaster:游戲治理者,負責游戲秩序,監控玩家行為及修改游戲狀態。
  
  StateObserver:游戲狀態觀察者,觀察游戲狀態并在UI上顯示。(完成)
  
  2)游戲規則設計。設計游戲規則及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的狀態并做出相應修改。
  
  目前剩余的任務有:
  
  1)GameMaster中需要判定游戲結束。游戲結束條件將在下列條件中選擇:
  
  a)無法繼續落子判和
  
  b)一方子全滅判輸
  
  c)一方落子時間超過期限判輸
  
  d)一方三子連珠判贏
  
  2)GameMaster中增加時間限制。
  
  3)通過MainFrame中的菜單對游戲進行控制。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 剑川县| 东乡族自治县| 开平市| 榕江县| 临泽县| 西藏| 临江市| 克拉玛依市| 马关县| 沅陵县| 尼勒克县| 新余市| 昭苏县| 西充县| 元朗区| 务川| 洛阳市| 米泉市| 新营市| 开阳县| 洛浦县| 永寿县| 炉霍县| 丹阳市| 岱山县| 淮北市| 荣成市| 监利县| 大石桥市| 上杭县| 仁化县| 卓资县| 伊宁县| 南汇区| 桂平市| 酒泉市| 建始县| 龙川县| 益阳市| 修水县| 通辽市|