Java多线程HiLo游戏

时间:2014-09-27 16:52:33

标签: java multithreading timer

对于我的CS课,我必须使用多线程编写HiLo游戏。我是多线程的新手,不知道如何最好地实现它。下面的程序有效,但我想知道是否有更好的方法来做到这一点。当它运行时,用户将输入一个int,这是他们必须猜出正确数字的时间量。如果计时器用完,游戏将结束。我不应该使用Timer对象,而是使用System.currentTimeMillis()。

import java.util.Random;
import java.util.Scanner;

class Game implements Runnable {
    private static long time;
    private long timer;
    private static long gameTime;

    public Game(int n){
        gameTime=n;
    }

    public void run() {
        time=System.currentTimeMillis();
        while(true){
            timer=(System.currentTimeMillis()-time)/1000;
            if(timer>=gameTime){
                System.out.println("Oops! Time is up - try again.");
                break;
            }
        }
    }
}

public class Hilo {

    public static void main(String[] args) {
        if (args.length!=1){
            System.err.println("Must enter time");
        }
        Random rand = new Random();
        int max=100;
        int min=1;
        int number=rand.nextInt((max-min)+1)+min;
        int gameTime=Integer.parseInt(args[0]);
        System.out.println("Welcome to HiLo!");
        System.out.println("You have "+gameTime+" seconds to guess a number between 1 and 100.");
        Thread clock1 = new Thread(new Game(gameTime));
        clock1.start();

        while(clock1.isAlive()==true){
            System.out.println(">");
            Scanner sc = new Scanner(System.in);
            int input = sc.nextInt();

            if(clock1.isAlive()==true&&input==number){
                System.out.println("You Win!");
                break;
            }else if(clock1.isAlive()==true&&input<number){
                System.out.println("Higher!");
            }else if(clock1.isAlive()==true&&input>number){
                System.out.println("Lower!");
            }   
        }
    }
}

1 个答案:

答案 0 :(得分:0)

你可以使用一个休眠T秒的线程,然后退出调用System.exit()。