2015-06-13 3 views
0

Итак, в мой первый год обучения в колледже для моего рождественского проекта мне нужно было сделать базовую игру, используя заявления, я выбрал текстовое приключение, но я был новичком, которого я выбрал, чтобы выписать каждый распечатать:Продвижение текста в текстовом файле с использованием пользовательского ввода

System.out.println("You approach the two cupboards one on the right and one on the left.\nWhich one will you inspect?"); 
     System.out.println("Please press 1 to inspect the right cupboard or 2 to press the left cupboard."); 
     int Action1 = 0; 
     while(Action1 !=1 && Action1!=2){//Checking to make sure no one puts in a number thats not 1 or 2 
      Action1 = in.nextInt();//Start of Player choice 
      if(Action1 == 1) 
      { 
       System.out.println("In the right cupboard you find a note.\nUpon reading the note it says:"); 
       System.out.println("Hello" + " " + name + " " + "you're probably wondering why you woke up in this kitchen whith driend blood on your shirt unable to rememeber anything.\nPretty understandable. However, you're a part of my game now and I expect you to play by the rules. I'm waiting for you in the attic, if you can get here in one piece I'll reveal all.\n Ciao"); 
       Enter = in.nextLine(); 
       System.out.println("After reading the note you check the next cupboard."); 
       System.out.println("It contains a small key.\nFar too small for any of the locks in the kitchen, you keep it and move on."); 
       Enter = in.nextLine(); 
      } 

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

Scanner in = new Scanner(System.in); 
     FileReader file = new FileReader("C:/Users/jamie/Desktop/TextAdventure/TextFiles/Opening.txt"); 
     BufferedReader reader = new BufferedReader(file); 

     String text = ""; //string to hold the text in the text file 
     String line = reader.readLine(); 
     while (line != null) 
     { 
      text += line+"\n"; 
      line = reader.readLine(); 
     } 
     System.out.println(text); 

Я предпочел бы только толчок в правильном направлении, а не полный на примере, как я хотел бы, чтобы понять это сам, но немного помочь было бы большим спасибо!

+0

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

+0

да, извините, должно было сделать это яснее –

+0

Чтобы распечатать строку и ждать, пока пользователь нажмет любую клавишу (а также сообщит пользователю, чтобы нажать любую клавишу, чтобы продолжить), и после того, как они нажмут любую клавишу, удалите это сообщение и распечатайте следующий одно дело нелегко. Причина здесь: [java backspace escape] (http://stackoverflow.com/a/3328871/1174730) две альтернативы, хотя это хорошо работает с пишущей машиной (печатать символ, ждать несколько миллисекунд, печатать символ, ect) ИЛИ просто распечатайте целую строку, подождите несколько секунд и повторите, я могу ответить простым примером того и другого, если вы хотите? –

ответ

0

Тип Writer подход:

String filename = "file.txt"; 
List<String> lines = new ArrayList<String>(); 
try (BufferedReader br = new BufferedReader(new FileReader(filename))) 
{ 
    String str; 
    while ((str = br.readLine()) != null) 
    { 
     lines.add(str); 
    } 
} 
catch (IOException ioe) 
{ 
    //handle errors 
} 

while (lines.size() > 0) 
{ 
    //we know that lines is more than 0 so remove the first element 
    String nextLineOut = lines.remove(0); 
    for (int charIndex = 0; charIndex < nextLineOut.length(); charIndex++) 
    { 
     System.out.print(nextLineOut.charAt(charIndex)); 
     try 
     { 
      //every time a character is printed to the console sleep for 50 milliseconds 
      Thread.sleep(50); 
     } 
     catch (InterruptedException ie) 
     {//handle errors 
     } 
    } 
    //we have reached end of line so print out a new line 
    System.out.print(System.lineSeparator()); 
} 

Для печати одной линии и ждать времени подход х. заменить код в

while(lines.length() > 0) 
{ 

} 

с

String nextLineOut = lines.remove(0); 
System.out.println(nextLineOut); 
try 
{ 
    //get amount of characters in the next line multiply by 50 to get a pause of x milliseconds per line 
    Thread.sleep(nextLineOut.length() * 50); 
} 
catch (InterruptedException ie) 
{//handle errors 
} 
+0

Спасибо! Очень признателен! –

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