Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.duplxey.nquiz.quiz;
- public class Answer {
- private String text;
- public Answer(String text) {
- this.text = text;
- }
- public String getText() {
- return text;
- }
- }
- package com.duplxey.nquiz.quiz;
- import java.net.URL;
- public class Question {
- private String text;
- private Answer[] answers;
- private URL imageURL;
- private int correct;
- public Question(String text, Answer[] answers, URL imageURL, int correct) {
- this.text = text;
- this.answers = answers;
- this.imageURL = imageURL;
- this.correct = correct;
- }
- public Question(String text, Answer[] answers, int correct) {
- this(text, answers, null, correct);
- }
- public boolean isCorrect(int i) {
- return i == correct;
- }
- public String getText() {
- return text;
- }
- public Answer[] getAnswers() {
- return answers;
- }
- public URL getImageURL() {
- return imageURL;
- }
- public int getCorrect() {
- return correct;
- }
- }
- package com.duplxey.nquiz.quiz;
- public enum QuizCategory {
- TRIVIA("Random questions."),
- MATH("Math related questions."),
- ENGLISH("English related questions."),
- FUN("Are these even fun?"),
- TECH("Computers, programming, net?"),
- ;
- private String description;
- QuizCategory(String description) {
- this.description = description;
- }
- public String getDescription() {
- return description;
- }
- }
- package com.duplxey.nquiz.quiz;
- public enum QuizDifficulty {
- EASY(0),
- MEDIUM(1),
- HARD(2),
- EXTREME(3),
- ;
- private int level;
- QuizDifficulty(int level) {
- this.level = level;
- }
- public int getLevel() {
- return level;
- }
- }
- package com.duplxey.nquiz.quiz;
- import com.duplxey.nquiz.util.FileUtil;
- import com.duplxey.nquiz.util.GsonUtil;
- import java.io.File;
- import java.io.IOException;
- import java.util.LinkedList;
- public class Quiz {
- private String name;
- private String description;
- private QuizCategory category;
- private QuizDifficulty difficulty;
- private LinkedList<Question> questions;
- // Transient to prevent serialization
- private transient File quizDirectory;
- private transient File file = null;
- public Quiz(QuizManager quizManager, String name, String description, QuizCategory category, QuizDifficulty difficulty, LinkedList<Question> questions) {
- this.name = name;
- this.description = description;
- this.category = category;
- this.difficulty = difficulty;
- this.questions = questions;
- quizDirectory = quizManager.getQuizDirectory();
- }
- public Quiz(QuizManager quizManager, String name, String description, QuizCategory category, QuizDifficulty difficulty) {
- this(quizManager, name, description, category, difficulty, new LinkedList<Question>() {});
- }
- public Quiz(QuizManager quizManager, String name) {
- this(quizManager, name, "No description given.", QuizCategory.FUN, QuizDifficulty.EASY, new LinkedList<Question>() {});
- }
- private void fileSetup() {
- if (file == null) {
- file = new File(quizDirectory, name + ".json");
- try {
- file.createNewFile();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- public void save() {
- fileSetup();
- FileUtil.writeToFile(file.getPath(), GsonUtil.getInstance().getGson().toJson(this));
- }
- public void delete() {
- fileSetup();
- file.delete();
- }
- public String getName() {
- return name;
- }
- public String getDescription() {
- return description;
- }
- public QuizCategory getCategory() {
- return category;
- }
- public QuizDifficulty getDifficulty() {
- return difficulty;
- }
- public LinkedList<Question> getQuestions() {
- return questions;
- }
- public void setDescription(String description) {
- this.description = description;
- }
- public void setCategory(QuizCategory category) {
- this.category = category;
- }
- public void setDifficulty(QuizDifficulty difficulty) {
- this.difficulty = difficulty;
- }
- public void addQuestion(Question question) {
- questions.add(question);
- }
- public void removeQuestion(int questionId) {
- questions.remove(questionId);
- }
- public void setQuestions(LinkedList<Question> questions) {
- this.questions = questions;
- }
- public void clearQuestions() {
- questions.clear();
- }
- public String info() {
- return name + " (" + description + ") " + "(" + category + ") " + "(" + difficulty + ")";
- }
- }
- package com.duplxey.nquiz.quiz;
- import com.duplxey.nquiz.util.FileUtil;
- import com.duplxey.nquiz.util.GsonUtil;
- import org.jsoup.Jsoup;
- import java.io.File;
- import java.io.IOException;
- import java.util.Collection;
- import java.util.HashMap;
- public class QuizManager {
- private File quizDirectory;
- private HashMap<String, Quiz> quizzes = new HashMap<>();
- public QuizManager() {
- setup();
- }
- private void setup() {
- quizDirectory = new File("quizzes");
- if (!quizDirectory.mkdir()) {
- File[] files = quizDirectory.listFiles();
- if (files != null) {
- for (File file : files) {
- registerQuiz(GsonUtil.getInstance().getGson().fromJson(FileUtil.getFileContent(file.getPath()), Quiz.class));
- }
- }
- }
- }
- public void registerQuiz(Quiz quiz) {
- quizzes.put(quiz.getName(), quiz);
- }
- public void unregisterQuiz(String name) {
- quizzes.remove(name);
- }
- public Quiz getQuiz(String name) {
- return quizzes.get(name);
- }
- public Quiz getWebQuiz(String url) throws IOException {
- return GsonUtil.getInstance().getGson().fromJson(Jsoup.connect(url).get().body().text(), Quiz.class);
- }
- public boolean existsQuiz(String name) {
- return quizzes.containsKey(name);
- }
- public Collection<Quiz> getQuizzes() {
- return quizzes.values();
- }
- public File getQuizDirectory() {
- return quizDirectory;
- }
- }
- package com.duplxey.nquiz.quiz;
- import java.util.Scanner;
- public class QuizPlay {
- private Quiz quiz;
- private Scanner sc;
- private int current = 0;
- private int[] results = new int[] {0, 0}; // 0 = correct, 1 = wrong
- private long startTime;
- public QuizPlay(Quiz quiz) {
- this.quiz = quiz;
- sc = new Scanner(System.in);
- }
- public void play() {
- System.out.println("-*-*-*-*-*-*- NQuiz -*-*-*-*-*-*-");
- System.out.println("Quiz name: '" + quiz.getName());
- System.out.println("Description: " + quiz.getDescription());
- System.out.println("Category: " + quiz.getCategory());
- System.out.println("Difficulty: " + quiz.getDifficulty());
- System.out.println("Number of questions: " + quiz.getQuestions().size());
- startTime = System.currentTimeMillis();
- for (Question question : quiz.getQuestions()) {
- System.out.println("---------------------------------");
- System.out.println("#" + current + " " + question.getText());
- for (int i = 0; i < question.getAnswers().length; i++) {
- System.out.println(i + ") " + question.getAnswers()[i].getText());
- }
- try {
- int answer = sc.nextInt();
- if (question.isCorrect(answer)) {
- System.out.println("Correct!");
- results[0]++;
- } else {
- System.out.println("Wrong!");
- results[1]++;
- }
- current++;
- } catch (Exception e) {
- System.out.println("Wrong input. Cancelled.");
- break;
- }
- }
- double correctPercentage = (100*results[0])/quiz.getQuestions().size();
- double wrongPercentage = 100 - correctPercentage;
- System.out.println("-*-*-*-*-*-*- NQuiz -*-*-*-*-*-*-");
- System.out.println("You've completed the quiz!");
- System.out.println();
- System.out.println("Results");
- System.out.println("Correct: " + results[0] + " (" + correctPercentage + "%)");
- System.out.println("Wrong: " + results[1] + " (" + wrongPercentage + "%)");
- System.out.println("Time needed: " + (System.currentTimeMillis() - startTime)/1000 + "s");
- System.out.println("---------------------------------");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement