分享
比赛打字稿.doc
下载文档

ID:3391485

大小:50KB

页数:4页

格式:DOC

时间:2024-04-15

收藏 分享赚钱
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
比赛 打字
创建工程和包,然后编写下面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<lv ;i++) { int r = random.nextInt(4); output += direction[r]; } return output; } /** * 下一关 */ public void nextLevel() { level += 1; System.out.println("\n---- 第 [ " + level +" ] 关 ----\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[] {"太完美了","加油","要小心了"}; int resultLevel = 0; //结果级别,resultString的索引 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", "→"); if (curData.equals(curInput)) { /* 如果输入正确,增加一次命中次数 */ ret = "[正确]"; hitCount += 1; } else { /* 如果输入错误,增加一次错误次数 */ ret = "[错误]"; missCount += 1; } } else { /* 如果输入为空,或为空字符串,增加一次错误次数 */ 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) / 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(result); return true; } } /** * 程序入口 * @param args */ public static void main(String[] args) { System.out.println("游戏:《劲舞团》"); System.out.println("游戏说明:每关限时30秒,有3次出错机会,↑:w,→:d↓s:,←:a \n"); System.out.println("\n---- 第 [ 1 ] 关 ----\n"); QuickHit qh = new QuickHit(); qh.run(); } }

此文档下载收益归作者所有

下载文档
你可能关注的文档
收起
展开