Advertisement
Guest User

game.java

a guest
Mar 5th, 2019
226
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 15.21 KB | None | 0 0
  1. import java.io.*;
  2. import java.util.Scanner;
  3.  
  4.  
  5. public class game {
  6.   public static void main(String[] args) throws IOException {
  7.     Scanner input = new Scanner(System.in);
  8.  
  9.     BufferedReader questionReader = new BufferedReader(new FileReader("./questions.txt"));
  10.     questionReader.readLine();
  11.     PrintWriter questionWriter = new PrintWriter(new BufferedWriter(new FileWriter("./questions.txt")));
  12.  
  13.     BufferedReader scoresReader = new BufferedReader(new FileReader("./scores.txt"));
  14.     scoresReader.readLine();
  15.     PrintWriter scoresWriter = new PrintWriter(new BufferedWriter(new FileWriter("./scores.txt")));
  16.  
  17.  
  18.     admin database = new admin();
  19.     leaderboard lead = new leaderboard();
  20.     String option, attempt, question, answer, answer1, answer2, answer3, line;
  21.     String username;
  22.     int numCorrect, numAnswered, index;
  23.     int correctAnswered = 0;
  24.     int numberAnswered = 0;
  25.     int tries = 2;
  26.     String password = "hawks";
  27.  
  28.     while ((line = questionReader.readLine()) != null) {
  29.       question = line;
  30.       answer = questionReader.readLine();
  31.       answer1 = questionReader.readLine();
  32.       answer2 = questionReader.readLine();
  33.       answer3 = questionReader.readLine();
  34.       database.addQandA(question, answer, answer1, answer2, answer3);
  35.     }
  36.  
  37.     while ((line = scoresReader.readLine()) != null) {
  38.       username = line;
  39.       numCorrect = Integer.parseInt(scoresReader.readLine());
  40.       numAnswered = Integer.parseInt(scoresReader.readLine());
  41.       leaderboard.addLeaderboard(username, numCorrect, numAnswered);
  42.     }
  43.  
  44.     while (true) {
  45.       lead.sortBoard();
  46.       System.out.println("Welcome to my Trivia Game!\n");
  47.       System.out.println("1) Play Game");
  48.       System.out.println("2) Leaderboard");
  49.       System.out.println("3) Administrator");
  50.       System.out.println("4) exit");
  51.       System.out.println("\nChoose an Option");
  52.       option = input.nextLine().trim();
  53.       if (option.equals("1")) {//play game option.
  54.         if (database.databaseSize() < 10) {
  55.           System.out.println("You can't play the game. Not enough questions have been inputted");
  56.         } else {
  57.           numberAnswered = 0;
  58.           correctAnswered = 0;
  59.           password = "";
  60.           database.randomizeQAndA();
  61.           database.createGame();
  62.           System.out.println("Do you wish to play?");
  63.           option = input.nextLine().trim();
  64.           if (option.equalsIgnoreCase("yes")) {
  65.             System.out.println("You will be asked a series of 10 questions");
  66.             System.out.println("Answer one correctly and you get a point");
  67.             System.out.println("Are you ready type \"yes\" to start the game\nOr \"exit\" to go to main menu");
  68.             option = input.nextLine().trim();
  69.             if (!option.equals("exit")) {
  70.               for (int i = 0; i < 10; i++) {
  71.                 int questionnumber = i + 1;
  72.                 System.out.println("Question " + questionnumber);
  73.                 System.out.println(database.getQuestion(i));
  74.                 System.out.println("A)" + database.getAnswer1(i));
  75.                 System.out.println("B)" + database.getAnswer2(i));
  76.                 System.out.println("C)" + database.getAnswer3(i));
  77.                 System.out.println("D)" + database.getAnswer4(i));
  78.                 System.out.println("Enter an answer choice");
  79.                 option = input.nextLine().trim().toLowerCase();
  80.                 if (!(option.equalsIgnoreCase("a")) && !(option.equalsIgnoreCase("b")) && !(option.equalsIgnoreCase("c")) && !(option.equalsIgnoreCase("d")) && !(option.equalsIgnoreCase("1")) && !(option.equalsIgnoreCase("2")) && !(option.equalsIgnoreCase("3")) && !(option.equalsIgnoreCase("4"))) {
  81.                   System.out.println("Enter either \"A\"  \"B\"  \"C\"  or  \"D\"");
  82.                   System.out.println("Enter either \"1\"  \"2\"  \"3\"  or  \"4\"");
  83.                 } else {
  84.                   if (option.equalsIgnoreCase("a")) {
  85.                     for (int x = 0; x < database.databaseSize(); x++) {
  86.                       if (database.getQuestion(i).equals(database.displayQuestion(x))) {
  87.                         if (database.getAnswer1(i).equals(database.displayCorAns(x))) {
  88.                           System.out.println("Correct!");
  89.                           correctAnswered++;
  90.                           numberAnswered++;
  91.                         } else {
  92.                           System.out.println("Wrong!");
  93.                           numberAnswered++;
  94.                         }
  95.                       }
  96.                     }
  97.                   } else if (option.equalsIgnoreCase("b")) {
  98.                     for (int x = 0; x < database.databaseSize(); x++) {
  99.                       if (database.getQuestion(i).equals(database.displayQuestion(x))) {
  100.                         if (database.getAnswer3(i).equals(database.displayCorAns(x))) {
  101.                           System.out.println("Correct!");
  102.                           correctAnswered++;
  103.                           numberAnswered++;
  104.                         } else {
  105.                           System.out.println("Wrong!");
  106.                           numberAnswered++;
  107.                         }
  108.                       }
  109.                     }
  110.                   } else if (option.equalsIgnoreCase("c")) {
  111.                     for (int x = 0; x < database.databaseSize(); x++) {
  112.                       if (database.getQuestion(i).equals(database.displayQuestion(x))) {
  113.                         if (database.getAnswer3(i).equals(database.displayCorAns(x))) {
  114.                           System.out.println("Correct!");
  115.                           correctAnswered++;
  116.                           numberAnswered++;
  117.                         } else {
  118.                           System.out.println("Wrong!");
  119.                           numberAnswered++;
  120.                         }
  121.                       }
  122.                     }
  123.                   } else if (option.equalsIgnoreCase("d")) {
  124.                     for (int x = 0; x < database.databaseSize(); x++) {
  125.                       if (database.getQuestion(i).equals(database.displayQuestion(x))) {
  126.                         if (database.getAnswer4(i).equals(database.displayCorAns(x))) {
  127.                           System.out.println("Correct!");
  128.                           correctAnswered++;
  129.                           numberAnswered++;
  130.                         } else {
  131.                           System.out.println("Wrong!");
  132.                           numberAnswered++;
  133.                         }
  134.                       }
  135.                     }
  136.                   }
  137.                 }
  138.               }
  139.             }
  140.             System.out.println("You got " + correctAnswered + " answers correct out of " + numberAnswered);
  141.             System.out.println("Would you like to save your score?");
  142.             System.out.println("If yes, type \"1\" or type \"yes\"");
  143.             System.out.println("If no, type \"2\" or type \"exit\"");
  144.             option = input.nextLine();
  145.             if (option.equals("1") || option.equals("yes")) {
  146.               if(lead.returnNumUsers()==0){
  147.                 System.out.println("Enter a username: ");
  148.                 username = input.nextLine();
  149.                 System.out.println("Score: \n\tNumber Correct: " + correctAnswered+"\n\tNumber Answered: " + numberAnswered);
  150.                 lead.addLeaderboard(username,correctAnswered,numberAnswered);
  151.               } else {
  152.                 System.out.println("Enter a username: ");
  153.                 username = input.nextLine();
  154.                 for (int i = 0; i < lead.returnNumUsers(); i++) {
  155.                   System.out.println("test");
  156.                   if (username.equals(lead.displayUsername(i))) {
  157.                     System.out.println("This user already exists, if this is you enter the password");
  158.                     password = input.nextLine();
  159.                     System.out.println("Confirm if this is you type \"yes\" or \"1\" to add score to this user or type \"no\" or \"2\" to create new user");
  160.                     if(password.equals("yes")||password.equals("1")){
  161.                       System.out.println("Score: \n\tNumber Correct: " + correctAnswered+"\n\tNumber Answered: " + numberAnswered + "\n\tAverage: " + lead.getScore(i));
  162.                       lead.setLeaderboard(username,correctAnswered,numberAnswered,i);
  163.                       break;
  164.                     } else if(password.equals("no")||password.equals("2")){
  165.                       System.out.println("Enter a new username");
  166.                       username = input.nextLine();
  167.                       System.out.println("Score: \n\tNumber Correct: " + correctAnswered+"\n\tNumber Answered: " + numberAnswered + "\n\tAverage: " + lead.getScore(i));
  168.                       lead.setLeaderboard(username,correctAnswered,numberAnswered,i);
  169.                     }
  170.                   } else {
  171.                     System.out.println("Creating user: " + username);
  172.                     System.out.println("\tNumber Correct: " + correctAnswered);
  173.                     System.out.println("\tNumber Answered: " + numberAnswered);
  174.                     System.out.println("\tScore: " + (correctAnswered/numberAnswered));
  175.                     lead.addLeaderboard(username,correctAnswered,numberAnswered);
  176.                   }
  177.                 }
  178.               }
  179.  
  180.             }
  181.           }
  182.         }
  183.       } else if (option.equals("2")) {//leaderboard option
  184.         while (true) {
  185.           System.out.println("1) View top 10 players");
  186.           System.out.println("2) Search for a player score");
  187.           System.out.println("3) View entire leaderboard");
  188.           System.out.println("4) exit");
  189.           option = input.nextLine().trim();
  190.           if (option.equals("1")) {
  191.             for (int i = 0; i < 10; i++) {
  192.               int playerNum = i + 1;
  193.               System.out.println("Rank " + playerNum + ":\n\tUsername: " + lead.displayUsername(i));
  194.               System.out.println("\tCorrect Answers: " + lead.displayNumCor(i));
  195.               System.out.println("\tTotal Questions: " + lead.displayNumAns(i));
  196.               System.out.println("\tScore:           " + lead.getScore(i));
  197.             }
  198.           } else if (option.equals("2")) {
  199.             System.out.println("Enter the username or rank of the user you want to view");
  200.             option = input.nextLine().trim();
  201.             lead.searchUser(option);
  202.           } else if (option.equals("3")) {
  203.             lead.viewLeaderboard();
  204.           } else if (option.equals("4")) {
  205.             break;
  206.           } else {
  207.             System.out.println("Please choose an option available");
  208.           }
  209.         }
  210.       } else if (option.equals("3")) {//admin option
  211.         System.out.println("Please enter the password or type \"exit\" to leave: ");
  212.         attempt = input.nextLine();
  213.         if (!attempt.equals(password)) {
  214.           while (!attempt.equals(password)) {
  215.             tries--;
  216.             System.out.println("Incorrect password. Try again.\nYou have: " + (tries + 1) + " attempts left.");
  217.             attempt = input.nextLine();
  218.             if (tries == 0) {
  219.               questionWriter.println();
  220.               scoresWriter.println();
  221.               for (int i = 0; i < database.databaseSize(); i++) {
  222.                 questionWriter.println(database.displayQuestion(i));
  223.                 questionWriter.println(database.displayCorAns(i));
  224.                 questionWriter.println(database.displayWrongOne(i));
  225.                 questionWriter.println(database.displayWrongTwo(i));
  226.                 questionWriter.println(database.displayWrongThree(i));
  227.               }
  228.               for (int i = 0; i < lead.returnNumUsers(); i++) {
  229.                 scoresWriter.println(lead.displayUsername(i));
  230.                 scoresWriter.println(lead.displayNumCor(i));
  231.                 scoresWriter.println(lead.displayNumAns(i));
  232.               }
  233.               questionWriter.close();
  234.               scoresWriter.close();
  235.               System.exit(0);
  236.             }
  237.           }
  238.         }
  239.         tries = 3;
  240.         while (true) {
  241.           System.out.println("1) Add a question?");
  242.           System.out.println("2) Remove a question?");
  243.           System.out.println("3) View the database?");
  244.           System.out.println("4) Exit");
  245.           option = input.nextLine().trim();
  246.           if (option.equalsIgnoreCase("add") || option.equals("1")) {
  247.             do {
  248.               System.out.println("Enter your question: ");
  249.               question = input.nextLine();
  250.               System.out.println("Enter correct answer: ");
  251.               answer = input.nextLine();
  252.               System.out.println("Enter 3 incorrect answers: ");
  253.               answer1 = input.nextLine();
  254.               answer2 = input.nextLine();
  255.               answer3 = input.nextLine();
  256.               database.addQandA(question, answer, answer1, answer2, answer3);
  257.               System.out.println("Do you want to enter new question?");
  258.               option = input.nextLine().trim();
  259.             } while (option.equalsIgnoreCase("yes"));
  260.           } else if (option.equalsIgnoreCase("view") || option.equals("3")) {
  261.             if (database.databaseSize() == 0) {
  262.               System.out.println("The database is empty");
  263.             } else {
  264.               for (int i = 0; i < database.databaseSize(); i++) {
  265.                 database.printDatabase(i);
  266.               }
  267.             }
  268.           } else if (option.equalsIgnoreCase("remove") || option.equals("2")) {
  269.             if (database.databaseSize() == 0) {
  270.               System.out.println("The database is empty");
  271.             } else {
  272.               for (int i = 0; i < database.databaseSize(); i++) {
  273.                 database.printDatabase(i);
  274.               }
  275.             }
  276.             System.out.println("Enter the question number you want to remove");
  277.             option = input.nextLine().trim();
  278.             if (admin.isNumeric(option)) {
  279.               index = Integer.parseInt(option);
  280.               admin.removeQuestion(index - 1);
  281.             } else {
  282.               System.out.println("There is no question with that number");
  283.             }
  284.           } else if (!(option.equals("4")) || !(option.equalsIgnoreCase("exit"))) {
  285.             break;
  286.           } else {
  287.             System.out.println("Please enter a choice provided");
  288.           }
  289.         }
  290.       } else if (option.equals("4") || option.equalsIgnoreCase("exit")) {
  291.         System.out.println("Thanks for playing!");
  292.         questionWriter.println();
  293.         scoresWriter.println();
  294.         for (int i = 0; i < database.databaseSize(); i++) {
  295.           questionWriter.println(database.displayQuestion(i));
  296.           questionWriter.println(database.displayCorAns(i));
  297.           questionWriter.println(database.displayWrongOne(i));
  298.           questionWriter.println(database.displayWrongTwo(i));
  299.           questionWriter.println(database.displayWrongThree(i));
  300.         }
  301.         for (int i = 0; i < lead.returnNumUsers(); i++) {
  302.           scoresWriter.println(lead.displayUsername(i));
  303.           scoresWriter.println(lead.displayNumCor(i));
  304.           scoresWriter.println(lead.displayNumAns(i));
  305.         }
  306.         break;
  307.       } else {//catch user error
  308.         System.out.println("Please choose a choice available");
  309.       }
  310.     }
  311.     questionWriter.close();
  312.     scoresWriter.close();
  313.   }
  314. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement