2016-01-25 2 views
1

Итак, я создаю текстовую игру, и мне трудно найти способ сделать паузу между текстовыми дисплеями. Я знаю, что поток сна будет работать, но я не хочу сделать это для сотен строк текста. Вот что я имею, но есть ли гораздо более простой способ сделать это?Пауза между текстовым дисплеем

public class MyClass { 
    public static void main(String[] args) { 
     System.out.println("Hello?"); 
     //pause here 
     System.out.println("Is this thing on?"); 
     /**Obviously I have a pause here, but I dont want to have to use this every time.*/ 
     try { 
      Thread.sleep(x); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     System.out.println("Now, what is your name?"); 
    } 
} 
+0

Чтобы реорганизовать код, который вы можете просто создать свой собственный ** печать() ** метод, который будет делать паузу после печати текста –

+0

Написать метод, назовем его 'pause', может позволить абоненту пройти в Значение 'int', указывающее количество времени, которое они хотят приостановить – MadProgrammer

ответ

0

Отъезд TimerTask.

Вы можете использовать его как это:

public static void main(String[] args) { 
    Timer timer = new Timer(); 
    writeIn(timer, 3000, "Hello?"); 
    writeIn(timer, 6000, "Is this thing on?"); 
    writeIn(timer, 12000, "Now, what is your name?"); 
    closeTimerIn(timer, 13000); // clean exit 
} 

private static void writeIn(Timer timer, final int millis, final String text){ 
    TimerTask task = new TimerTask() { 
     @Override 
     public void run() { 
      System.out.println(text); 
     } 
    }; 
    timer.schedule(task, millis); 
} 

private static void closeTimerIn(final Timer timer, final int millis){ 
    TimerTask task = new TimerTask() { 
     @Override 
     public void run() { 
      timer.cancel(); 
     } 
    }; 
    timer.schedule(task, millis); 
} 
0

Как m.antkowicz отметил в комментарии, вы хотите создать метод печати. Я привел пример:

void printAndSleep(String string, int sleepTimeMs) { 
    System.out.println(string); 
    Thread.sleep(sleepTimeMs); 
} 

Теперь в любое время вы хотите напечатать, просто использовать метод printAndSleep мы сделали выше. Например:

printAndSleep("Hello?", 1000); // Print and pause for 1 second 
printAndSleep("Is this thing on?", 2000); // Print and pause for 2 seconds 
1

Почему бы просто не обернуть его в другом классе?

class DisplayWrapper { 
    private final static long DEFAULT_PAUSE_MS = 250; 

    public static void outputWithPause(String text, long ms) { 
     System.out.println(text); 
     try { 
      Thread.sleep(ms); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

    public static void show(String text) { 
     outputWithPause(text. DEFAULT_PAUSE_MS); 
    } 
} 

public class MyClass { 
public static void main(String[] args) { 
    DisplayWrapper.show("Hello?"); 
    DisplayWrapper.show("Is this thing on?"); 
    DisplayWrapper.show("Now, what is your name?"); 
} 
+0

Я не считаю, что создание целого класса для этой функциональности - хорошая идея или хороший дизайн. Классы должны охватывать больше функциональности, чем одна функция. Это должно быть записано в самой функции –

Смежные вопросы