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");
}
}

New Topic/Question
Reply



MultiQuote






|