1、创建工程和包,然后编写下面3个类,运行QuickHit类。/* * 游戏数据类 */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= 4) data
2、Index = 0; return lever_pass; else dataIndex += 1; return output; /* * 裁判类 */package accp;public class Judge String resultString = new String 太完美了,加油,要小心了; int resultLevel = 0; /结果级别,resultString的索引 long curTime = System.currentTimeMillis(); /当前时间 int hitCount = 0; /命中次数 int missCount = 0; /错误次数 int
3、 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) /* 如
4、果输入不为空,也不为空字符串 */ curInput = curInput.replaceAll(w, ); curInput = curInput.replaceAll(s, ); curInput = curInput.replaceAll(a, ); curInput = curInput.replaceAll(d, ); if (curData.equals(curInput) /* 如果输入正确,增加一次命中次数 */ ret = 正确; hitCount += 1; else /* 如果输入错误,增加一次错误次数 */ ret = 错误; missCount += 1; else
5、/* 如果输入为空,或为空字符串,增加一次错误次数 */ ret = 错误; missCount += 1; totalCount += 1; /* 判断是否超过次数 */ if (missCount MAX_MISS_COUNT) / 超过限制次数则放回失败信息,游戏停止 System.out.println(n你失败了!你错了 + missCount + 次(最多+MAX_MISS_COUNT+次)); return fail; /* 计算已用时间,并判断是否超时 */ long secPassed = (System.currentTimeMillis() - curTime) / 10
6、00; 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命中: + hitC
7、ount + t + resultStringresultLevel + ; /* * 游戏运行类 */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 = ; / 当前输入 /* * 运行游戏
8、*/ 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(); j
9、udge.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(result); return true; /* * 程序入口 * param args */ public static void main(String args) System.out.println(游戏:劲舞团); System.out.println(游戏说明:每关限时30秒,有3次出错机会,:w,:ds:,:a n); System.out.println(n- 第 1 关 -n); QuickHit qh = new QuickHit(); qh.run();