public class TriviaGame { public String quizName; public int maxNumQuestions; public int numChances; public int remainingChances; public int numCorrect = 0; public int numIncorrect = 0; public TriviaQuestion[] questions; // the set of questions private boolean[] correct; // true if corresponding question answered private int currNumQuestions = 0; // current number of questions public TriviaGame(String quizName, int maxNumQuestions, int numChances) // Precondition: maxNumQuestions > 0 and numChances > 0 { this.quizName = quizName; this.maxNumQuestions = maxNumQuestions; this.numChances = numChances; remainingChances = numChances; questions = new TriviaQuestion[maxNumQuestions]; correct = new boolean[maxNumQuestions]; } /*public String getQuizName() { return quizName; } public int getNumChances() { return numChances; } public int getRemainingChances() { return remainingChances; } public int getNumCorrect() { return numCorrect; } public int getNumIncorrect() { return numIncorrect; } public int getCurrNumQuestions() { return currNumQuestions; }*/ public TriviaQuestion getTriviaQuestion(int questionNumber) // Precondition: 0 < questionNumber <= currNumQuestions { return questions[questionNumber - 1]; } public boolean isAnswered(int questionNumber) // Precondition: 0 < questionNumber <= currNumQuestions { return correct[questionNumber - 1]; } public boolean isOver() // Returns true if this game is over, false otherwise. { return (numCorrect == currNumQuestions) || (remainingChances <= 0); } public void insertQuestion(TriviaQuestion question) // Precondition: currNumQuestions < maxNumQuestions // // Adds question to this TriviaGame. { questions[currNumQuestions] = question; correct[currNumQuestions] = false; currNumQuestions = currNumQuestions + 1; } public void correctAnswer(int questionNumber) // Preconditions: 0 < questionNumber < maxNumQuestions // // Updates game status to indicate that question number // "questionNumber" was answered correctly. { correct[questionNumber - 1] = true; numCorrect = numCorrect + 1; remainingChances = remainingChances - 1; } public void incorrectAnswer() // Updates game status to indicate that a question // was answered incorrectly { numIncorrect = numIncorrect + 1; remainingChances = remainingChances - 1; } }
public class TriviaConsole { public static void main(String[] args) throws IOException { Scanner conIn = new Scanner(System.in); TriviaGame game; // the trivia game int questNum; // current question number TriviaQuestion tq; // current question String answer; // answer provided by user // Initialze the game game = GetTriviaGame.useTextFile("game.txt"); // Greet the user. System.out.println("Welcome to " + game.getQuizName() + "."); System.out.println("You will have " + game.getNumChances() + " chances " + "to answer " + game.getCurrNumQuestions() + " questions.\n"); questNum = 1; while (!game.isOver()) { // Get number of next unanswered question. while (game.isAnswered(questNum)) { if (questNum == game.getCurrNumQuestions()) { questNum = questNum + 1; } else { questNum = questNum + 1; } } // Ask question and handle user's response. tq = game.getTriviaQuestion(questNum); System.out.println(tq.getCategory() + ": " + tq.getQuestion()); answer = conIn.nextLine(); if (tq.tryAnswer(answer)) { System.out.println("Correct!\n"); game.correctAnswer(questNum); } else { System.out.println("Incorrect\n"); game.incorrectAnswer(); questNum = questNum + 1; } } System.out.println("\nGame Over"); System.out.println("\nResults:"); System.out.print(" Chances used: " + (game.getNumChances() - game.getRemainingChances())); System.out.println(" Number Correct: " + game.getNumCorrect()); System.out.println("\nThank you.\n"); } }