WEB开发网
开发学院WEB开发Jsp JAVA模块游戏规则和界面设计(一) 阅读

JAVA模块游戏规则和界面设计(一)

 2008-01-05 17:59:13 来源:WEB开发网   
核心提示:本模块为游戏规则和界面设计,计划于2005.3.9完成,JAVA模块游戏规则和界面设计(一),目前进展顺利,预计将提前一天完成,目前剩余的任务有:1)GameMaster中需要判定游戏结束,游戏结束条件将在下列条件中选择:a)无法继续落子判和b)一方子全灭判输c)一方落子时间超过期限判输d)一方三子连珠判赢2)Game

  本模块为游戏规则和界面设计,计划于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中的菜单对游戏进行控制。

Tags:JAVA 模块 游戏规则

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接