(Java-Netbeans) Create a simple trivia game for 2 players. The program will work
ID: 655378 • Letter: #
Question
(Java-Netbeans)
Create a simple trivia game for 2 players. The program will work like this:
Starting with player 1, each player gets a turn at answering 5 trivia questions.There are 10 questions, 5 for each player. When a question is displayed, four possible answers are also displayed. Only one of the answers is correct, and if the player selects the correct answer, he or she earns a point.
After answers have been selected for all of the questions, the program displays the number of points earned by each player and declares the player with the highest number of points the winner.
Design a Question class to hold the data for a trivia question. The Question class should have String fields for the following data:
A trivia question
Possibe Answer 1
Possible Answer 2
Possible Answer 3
Possible Answer 4
The number of the correct answer (1,2, 3, or 4)
The Question class should have appropriate constructor(s), accessors, and mutator methods. The program should create an ArrayList of 10 Question objects, one for each trivia question. Make up your own trivia questions on the subject of your choice.
Explanation / Answer
List<Question> questions;
public List<Question> getQuestions()
{
return questions;
}
TrivaGame() throws IOException
{
questions = readQuestions();
}
/**
* This class represents question object */
class Question
{
private String question;
private List<String> possibleAnswers;
private int answer;
@Override public String toString()
{
return "Question [question=" + question + ", possibleAnswers=" + possibleAnswers + ", answer=" + answer + "]";
}
}
/**
* This class represents player object */
class Player
{
int playerNumber; int points;
}
/**
* Function will accept a string based on the following format and transform
* it into a Question object
*/
Function<String, Question> mapLineToQuestion = new Function<String, Question>()
{
public Question apply(String line)
{
Question question = new Question();
List<String> questionPieces = Splitter.on("|").trimResults() .omitEmptyStrings().splitToList(line);
question.question = questionPieces.get(0);
question.possibleAnswers = Splitter.on(",").trimResults() .omitEmptyStrings().splitToList(questionPieces.get(1));
question.answer = Integer.parseInt(questionPieces.get(2));
return question;
}
};
/**
* Method will read each line of a file then mapping it to a question
* object.
*
* @return
* @throws IOException
*/ public List<Question> readQuestions() throws IOException
{
List<Question> questions = Files .lines(Paths .get("src/main/resources/com/levelup/java/exercises/beginner/trivia.txt")) .map(mapLineToQuestion).collect(Collectors.toList());
return questions;
}
/**
* Method should generate random number based total number of questions *
* @param numberOfQuestions
* @return
*/ public static int getRandomQuestionNumber(int numberOfQuestions)
{
Random random = new Random();
OptionalInt questionNumber = random.ints(1, numberOfQuestions) .findFirst();
return questionNumber.getAsInt();
}
/**
* Method should display a question passed *
* @param q * @param playerNum
*/ public static void displayQuestion(Question q, int playerNum)
{
// Display the player number. System.out.println("Question for player #" + playerNum);
System.out.println("------------------------");
// Display the question. System.out.println(q.question);
for (int i = 0; i < q.possibleAnswers.size(); i++)
{
System.out.println((i + 1) + ". " + q.possibleAnswers.get(i));
}
}
/**
* Method will output summary stats and declare a winner *
* @param players
*/ public static void showGameResults(Player[] players)
{
// Display the stats. System.out.println("Game Over!");
System.out.println("---------------------");
System.out.println("Player 1's points: " + players[0].points);
System.out.println("Player 2's points: " + players[1].points);
// Declare the winner.
if (players[0].points > players[1].points)
{
System.out.println("Player 1 wins!");
}
else if (players[1].points > players[0].points)
{
System.out.println("Player 2 wins!");
}
else
{
System.out.println("It's a TIE!");
}
}
static int NUMBER_OF_PLAYERS = 2;
static int NUMBER_OF_CHANCES = 5;
public static void main(String args[]) throws IOException
{
// Initiate trivia game TrivaGame trivaGame = new TrivaGame();
Scanner keyboard = new Scanner(System.in);
// how many total questions exist int numberOfQuestions = trivaGame.getQuestions().size();
// create array of players Player[] players = { trivaGame.new Player(), trivaGame.new Player()
};
// Play the game for each player defined and number of chances for (int x = 0; x < players.length; x++)
{
Player currentPlayer = players[x];
for (int i = 0; i < NUMBER_OF_CHANCES; i++)
{
// get random question Question question = trivaGame.getQuestions().get( getRandomQuestionNumber(numberOfQuestions));
displayQuestion(question, x + 1);
// ask user to enter question System.out.print("Enter the number of the correct answer: ");
int currentAnswer = keyboard.nextInt();
// answer logic if (currentAnswer == question.answer)
{
// The player's chosen answer is correct. System.out.println("Correct! ");
currentPlayer.points += 1;
}
else
{
// The player chose the wrong answer.
System.out.println("Sorry, that is incorrect. The correct " + "answer is " + question.answer + ". ");
}
}
}
// close keyboard keyboard.close();
// display game results showGameResults(players);
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.