本帖最后由 小张童鞋 于 2012-6-9 21:51 编辑
这个是在老师的帮助下写的另外一种方法
ps:老师果然是老师。。姜还是老的辣啊
- import java.util.Random;//随机数生成器
- import java.util.Scanner;//一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器
- import java.util.Timer;//计时器
- import java.util.TimerTask;
- public class MyGame
- {
- //用户产生随机数
- public final static Random random = new Random();
- //输出的字符串,用户给用户提供一个打印模板
- public final static StringBuffer sb = new StringBuffer("");
- //每次都会让用户输入的数+1,用作统计用户输入的数
- private static int charCounter = 1;
- //设定输入时间,因为游戏叫做"是男人就坚持10秒",所以默认值是10
- private static final int cancelSecond = 10;
- //设定闯关成功字符数
- private static final int OK = 10;
- public static void main(String[] args)
- {
- new MyGame().start();
- }
- //游戏主体
- public void start()
- {
- final Scanner scanner = new Scanner(System.in);
- final Timer timer = new Timer();
- //下面我用了内部类
- timer.schedule(new TimerTask()//schedule()方法:安排在指定的时间执行指定的任务。
- {
- public void run()
- {
- long startSecond = System.currentTimeMillis();
- for(int i=0;i<charCounter;i++)
- {
- int randNum=random.nextInt(26);
- char character =(char)(randNum+'A');
- sb.append(character);
- }
- System.out.println(sb);
- while(true)
- {
- String inputString = scanner.next();
- //如果当前时间-开始时间>默认时间
- if(System.currentTimeMillis()-startSecond>cancelSecond*1000)
- {
- System.out.println("连"+cancelSecond+"秒都坚持不了,还算不算男人");
- System.exit(0);//游戏失败,退出。
- }
- //如果用户输入正确,进入下一关
- if(inputString.toUpperCase().equals(sb.toString()))
- {
- if(charCounter == OK)
- {
- System.out.println("恭喜闯关成功");
- System.exit(0);
- }
- System.out.println("Go next level");
- charCounter++;
- sb.delete(0,sb.length());
- break;
- //否则,提示继续闯关
- }else
- {
- startSecond = System.currentTimeMillis();
- System.out.println("Go on to write it");
- System.out.println(sb);
- }
- }
- }
- },0, 1000);
- }
- }
复制代码 |