1090 Frågespel

Nu ska du göra ett frågespel. Frågor och svar kommer att läsas från en textfil, med hjälp av den färdigskrivna klassen Questionreader. Koden ligger under en egen uppgift. Det är bara att klippa och klistra.

Du kommer att skriva klasserna Question och Quiz.

Börja med att göra ett nytt projekt i BlueJ. Döp projektet till Quiz.

Klassen Question

Question

  • String question
  • String answer
  1. String getQuestion()
  2. String getAnswer()
  3. boolean answerIs(String guess)

konstruktor

Konstruktorn tar två parametrar, theQuestion och theAnswer. Båda är textsträngar. Fälten question och answer får parametrarnas värden.

Metoder

Metodnamnen avslöjar förhoppningsvis vad metoderna ska göra.

I klassen String finns en metod `equalsIgnoreCase(String s). Metoden kan användas för att jämföra textsträngar.

Klassen QuestionReader

Klassen QuestionReader är färdigskriven. Konstruktorn tar filnamnet för textfilen med frågor och svar som en parameter. Filnamnet kan till exempel vara questions.txt.

QuestionReader

  • fileName
  1. ArrayList readQuestions()

Textfilen med frågor och svar

I mappen Quiz sparar du en textfil med frågor och svar. Första raden i filen är en fråga. Andra raden är svaret på frågan. Tredje raden är en ny fråga. Fjärde raden är svaret på den senaste frågan. Och så vidare.

Textfilen kan till exempel heta

questions.txt

Klassen Quiz

Quiz

  • ArrayList questionBook
  • QuestionReader reader;
  1. run()

konstruktor

En ArrayList som kan innehålla objekt av klassen Question skapas på följande vis

new ArrayList<Question>()

Konstruktorn för klassen QuestionReader tar ett filnamn som parameter. Det är filnamnet för filen som innehåller frågor och svar. I QuestionReader finns en metod readQuestions(). Använd den för att läsa frågorna från fil.

Metoden run()

Detta är den metod som kör själva frågespelet.

Frågorna skrivs ut till terminalfönstret. När det är gjort väntar datorn på att användaren ska skriva in ett svar och trycka på enter. Inläsning från tangentbordet sker med hjälp av metoden nextLine() i klassen Scanner, se nedan och dokumentationen för Java.

//ex.
//Skapa en läsare som läser inmatningar från tangentbordet.
//Ett objekt av klassen Scanner behövs för att kunna göra inläsning.
Scanner keyboardReader = new Scanner(System.in);
String text;
text = keyboardReader.nextLine(); //läser in en textsträng från tangentbordet

När svaret lästs in jämförs det med det rätta svaret. Om svaret är rätt skrivs det ut:

”rätt”

Om svaret däremot är fel skrivs följande ut:

”fel, rätt svar är … ”

Alla frågor ställs efter varandra.

Därefter skriver programmet ut hur många rätt användaren hade på frågorna. Det kan t.ex. se ut så här:

”Du hade 4 rätt av 5 möjliga”.

Extra - men intressant

Studera klassen QuestionReader. Hur går det till när man läser från fil?