心动劲舞团

网易博客安全提醒:系统检测到您当前密码的安全性较

自行添加内容
,为了您的账号安全,建议您适时修改密码 立即修改 | 关闭

  /*

  * 游戏类

  */

  package accp;

  import java.util.Random;

  public class GameData {

  String[] direction = new String[]{"↑","→","↓","←"};

  //游戏级别(难度)

  int level = 1;

  //符号每关的输入次数

  int dataIndex = 0;

  public String nextOutput(int lv){

  Random random = new Random();

  String output = "";

  for(int i = 0;i < lv;i++){

  int r = random.nextInt(4);

  output += direction[r];

  }

  return output;

  }

  /**

  * 下一关

  */

  public void nextLevel(){

  level += 1;

  System.out.println("/n----第[" + "]关----/n");

  }

  /**

  * @param lv 游戏关卡;1.2...

  * @return

  */

  public String nextRow(){

  String output = nextOutput(level);

  if(dataIndex >= 4){

  dataIndex = 0;

  return "lever_pass";

  }else{

  dataIndex += 1;

  return output;

  }

  }

  }

  /*

  * 裁判类

  */

  package accp;

  public class Judge {

  String[] resultString = new String[]{"太好了","加油",的男人没有几个好人,"要当心了"};

  //收获级别,resultString的索引

  int resultLevel = 0;

  //目前工夫

  long curTime = System.currentTimeMillis();

  //命中次数

  int hitCount = 0;

  //讹谬次数

  int missCount = 0;

  //总共次数

  int totalCount = 0;

  //每关的工夫局限

  int MAX_SEC = 10;

  //所有关一共批准的失利次数

  int MAX_MISS_COUNT = 4;

  /**

  * 推断输入是否准确,是否超过局限次数,是否超时

  * @param curData 游戏要求的输入内容

  * @param curInput 玩家切实的输入内容

  * @return

  */

  public String judge(String curData,String curInput){

  String ret = "";

  if(null != curInput&&!"".equals(curInput)){

  /*万一输入不为空,也不为空字符串*/

  curInput = curInput.replaceAll("w","↑");

  curInput = curInput.replaceAll("s",你准备怎样度过这个圣诞佳节?在这个寒冷的冬季,"↓" );

  curInput = curInput.replaceAll("a", "←");

  curInput = curInput.replaceAll("d",以下是来自于DNF, "→");

  if(curData.equals(curInput)){

  /*万一输入准确,添置顺次命中次数*/

  ret = "[准确]";

  hitCount += 1;

  }else{

  /*万一输入讹谬,添置顺次讹谬次数*/

  ret = "[讹谬]";

  hitCount += 1;

  }

  }else{

  /*万一输入为空或为空字符串,添置顺次讹谬次数*/

  ret = "[讹谬]";

  hitCount += 1;

  }

  totalCount += 1;

  /*推断是否 超过次数*/

  if(missCount > MAX_MISS_COUNT){

  //超过局限次数则放回失利消息,游戏静止

  System.out.println("/n你失利了!你错了" + missCount + "次(最多" + MAX_MISS_COUNT + "次)");

  return "fail";

  }

  /*计算已用工夫,并推断是否超时*/

  long secPassed = (System.currentTimeMillis()-curTime)/1000;

  if(secPassed > MAX_SEC){

  //超时则放回失利消息,游戏静止

  System.out.println("/n你失利了!你错了" + secPassed + "秒过去了(最多" + MAX_SEC + "秒)");

  return "fail";

  }

  //归来【准确】或【讹谬】消息

  return ret;

  }

  /**

  * 获得收获

  * @return

  */

  public String getResult(){

  resultLevel = missCount;

  resultLevel = (resultLevel > 2)?2:resultLevel;

  return "总共:" + totalCount + "/t命中:" + hitCount + "/t[" + resultString[resultLevel] + "]";

  }

  }

  /*

  * 游戏运行类

  */

  package accp;

  import java.util.Scanner;

  public class QuickHit{

  //游戏数据对象

  GameData gdata = new GameData();

  //评比对象

  Judge judge = new Judge();

  //键盘输入对象

  Scanner input = new Scanner(System.in);

  //目前数据

  String curData = "";

  //目前输入

  String curInput = "";

  /**

  * 运行游戏

  */

  public void run(){

  boolean gaming = true;

  do{

  gaming = step();

  }while(gaming);

  }

  /**

  * 运行一步

  * @return 游戏是否告终

  */

  public boolean step(){

  //揭示一行字符

  curData = gdata.nextRow();

  if(curData.equals("lever_pass")){

  //过关,打印收获

  System.out.println("/n恭喜过关," + judge.getResult());

  gdata.nextLevel();

  curData = gdata.nextRow();

  //过关后重设目前工夫

  judge.curTime = System.currentTimeMillis();

  }

  System.out.println(curData);

  //获得输入

  curInput = input.nextLine();

  /*揭示该步收获*/

  String result = judge.judge(curData,curInput);

  if(result.equals("fail")){

  return false;

  }else{

  System.out.println();

  return true;

  }

  }

  /**

  * 过程入口

  * @param args

  */

  public static void main(String[] args){

  System.out.println("游戏:《劲舞团》");

  System.out.println("游戏解释:每关限时30秒,有3次时机,↑:w,→:d,↓:s,←:a");

  System.out.println("/n----第[1]关----/n");

  QuickHit qh = new QuickHit();

  qh.run();

  }

  }封装(encapsulation)是面向对象编程www.g1today.info的重要观念61.syxinhao.com。不幸的是,Java为不当心突破封装供给了得体——Java批准归来私有数据的引用(reference)。下面的代码揭示了这一点:

  

  
自行添加内容
标签:
分类:心情文学| 发布:admin| 查看: | 发表时间:2011-9-19
原创文章如转载,请注明:转载自2011心动劲舞团 http://www.auvip.com/
本文链接:http://www.auvip.com/post/248.html

相关文章

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

自行添加内容