diff --git a/KvizServer/app/src/main/assets/multiple.txt b/KvizServer/app/src/main/assets/multiple.txt index fd64d6a5dd03205b09fac0271d431f48a8f676df..2ec3736facaa6c1620f942346154100e67bd7dd8 100644 --- a/KvizServer/app/src/main/assets/multiple.txt +++ b/KvizServer/app/src/main/assets/multiple.txt @@ -1,8 +1,10 @@ -Melyik hónap 31 napos? július február június november -Mi Olaszország fővárosa? Róma London Berlin Moszkva -Melyik nem emlős? szula oroszlán farkas rozmár -Melyik kontinensen található Peru? Dél-Amerika Észak-Amerika Ázsia Afrika -Melyik város van legtávolabb Budapesttől? Sydney Makó Jeruzsálem London -Melyik nem biztosan trapéz? deltoid paralelogramma négyzet téglalap -Melyik NEM gázbolygó? Föld Jupiter Uránusz Neptunusz -Melyik folyó partján fekszik Budapest? Duna Jangce Nílus Szajna +egyéb Melyik hónap 31 napos? július február június november disabled +földrajz Mi Olaszország fővárosa? Róma London Berlin Moszkva enabled +földrajz Hány bolygó van a Naprendszerben? 8 enabled +egyéb Melyik nem emlős? szula oroszlán farkas rozmár enabled +földrajz Melyik kontinensen található Peru? Dél-Amerika Észak-Amerika Ázsia Afrika enabled +földrajz Melyik város van legtávolabb Budapesttől? Sydney Makó Jeruzsálem London enabled +egyéb Hány napos hónap a március? 31 enabled +egyéb Melyik nem biztosan trapéz? deltoid paralelogramma négyzet téglalap enabled +földrajz Melyik NEM gázbolygó? Föld Jupiter Uránusz Neptunusz disabled +földrajz Melyik folyó partján fekszik Budapest? Duna Jangce Nílus Szajna enabled diff --git a/KvizServer/app/src/main/java/onlab/kvizserver/GameActivity.java b/KvizServer/app/src/main/java/onlab/kvizserver/GameActivity.java index 21fe1daf530415ba19124a6feac6972ec47d669d..772fbc7e6c4c626d58b7dc5c0560807cf4c78c29 100644 --- a/KvizServer/app/src/main/java/onlab/kvizserver/GameActivity.java +++ b/KvizServer/app/src/main/java/onlab/kvizserver/GameActivity.java @@ -1,7 +1,5 @@ package onlab.kvizserver; -import android.content.Context; -import android.content.SharedPreferences; import android.os.Handler; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; @@ -17,21 +15,20 @@ import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.IOException; +import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; -import java.net.Socket; import java.util.ArrayList; -import java.util.Date; +import java.util.Iterator; import java.util.List; -import onlab.kvizserver.model.ClientModel; -import onlab.kvizserver.model.GuessQuestion; -import onlab.kvizserver.model.MultipleChoiceQuestion; +import onlab.kvizserver.model.PlayerAnswer; +import onlab.kvizserver.model.Question; public class GameActivity extends AppCompatActivity { - private List<MultipleChoiceQuestion> questions = new ArrayList<>(); + private List<Question> questions; private int questionIndex = 0; @@ -45,7 +42,7 @@ public class GameActivity extends AppCompatActivity { final List<String> answers = new ArrayList<>(); - int[] playerAnswers; + PlayerAnswer[] playerAnswers; int correctAnswer; @@ -64,23 +61,25 @@ public class GameActivity extends AppCompatActivity { updateConversationHandler = new Handler(); - BufferedReader buffreader; + InputStream inputStream = null; try { if (questionFileName == null) { - buffreader = new BufferedReader(new InputStreamReader(getAssets().open("multiple.txt"))); + inputStream = getAssets().open("multiple.txt"); } else { - buffreader = new BufferedReader(new InputStreamReader(new FileInputStream(new File(questionFileName)))); - } - String line; - while ((line = buffreader.readLine()) != null) { - String[] parts = line.split("\t"); - MultipleChoiceQuestion multipleChoiceQuestion = new MultipleChoiceQuestion( - parts[0], parts[1], parts[2], parts[3], parts[4]); - questions.add(multipleChoiceQuestion); + inputStream = new FileInputStream(new File(questionFileName)); } } catch (IOException e) { e.printStackTrace(); } + questions = readQuestions(inputStream); + + //nem feleletválasztós kérdések eltávolítása + Iterator<Question> it = questions.iterator(); + while( it.hasNext() ) { + Question q = it.next(); + if(q.getType() != Question.MULTIPLE_CHOICE) + it.remove(); + } Button nextQuestionBtn = (Button) findViewById(R.id.NextQuestion); Button correctAnswerButton = (Button) findViewById(R.id.CorrectAnswer); @@ -95,11 +94,14 @@ public class GameActivity extends AppCompatActivity { numberOfPlayers = ClientHolder.size(); - playerAnswers = new int[numberOfPlayers]; + playerAnswers = new PlayerAnswer[numberOfPlayers]; + for (int i=0;i<numberOfPlayers;i++) { + playerAnswers[i] = new PlayerAnswer(ClientHolder.get(i).getName()); + } for (int i=0;i<numberOfPlayers;i++) { final TextView playerAnswerTextView = new TextView(this); - playerAnswerTextView.setText("The answer of the " + Integer.toString(i + 1) + ". player: "); + playerAnswerTextView.setText("The answer of " + playerAnswers[i].getPlayerName() + ": "); playerAnswerTextView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 30); playerAnswersLinearLayout.addView(playerAnswerTextView); playerAnswerTextViews.add(playerAnswerTextView); @@ -122,13 +124,13 @@ public class GameActivity extends AppCompatActivity { @Override public void onClick(View view) { if (questionIndex < questions.size()) { - MultipleChoiceQuestion question = questions.get(questionIndex); + Question question = questions.get(questionIndex); questionString = question.getQuestionText(); questionText.setText(questionString); correctAnswerTextView.setText("Correct answer: " + question.getCorrectAnswer()); for (int i=0;i<numberOfPlayers;i++) { - playerAnswers[i] = -1; + playerAnswers[i].setValue(-1); } answers.clear(); @@ -145,7 +147,7 @@ public class GameActivity extends AppCompatActivity { } for (int i=0;i<outputs.size();i++) { - playerAnswerTextViews.get(i).setText("The answer of the " + Integer.toString(i + 1) + ". player: "); + playerAnswerTextViews.get(i).setText("The answer of " + playerAnswers[i].getPlayerName() + ": "); outputs.get(i).println(questionString + "##" + answers.get(0) + "##" + answers.get(1) + "##" + answers.get(2) + "##" + answers.get(3) + "##-1##-1##-1" ); } @@ -164,7 +166,7 @@ public class GameActivity extends AppCompatActivity { public void onClick(View view) { for (int i=0;i<outputs.size();i++) { outputs.get(i).println(questionString + "##" + answers.get(0) + "##" + answers.get(1) - + "##" + answers.get(2) + "##" + answers.get(3) + "##" + Integer.toString(playerAnswers[i]) + + "##" + answers.get(2) + "##" + answers.get(3) + "##" + Integer.toString(playerAnswers[i].getValue()) + "##" + "-1" + "##" + Integer.toString(correctAnswer) ); } } @@ -199,7 +201,8 @@ public class GameActivity extends AppCompatActivity { Log.d("GameActivity", "Klienstől kapott üzenet: " + read); String[] strings = read.split("##"); int answerInt = Integer.parseInt(strings[0]); - playerAnswers[index] = answerInt; + playerAnswers[index].setValue(answerInt); + playerAnswers[index].setTime(Double.parseDouble(strings[1])); updateConversationHandler.post(new GameActivity.updateUIThread(index, answers.get(answerInt) + " (" + strings[1] + "s)")); } @@ -222,8 +225,25 @@ public class GameActivity extends AppCompatActivity { @Override public void run() { - playerAnswerTextViews.get(index).setText("The answer of the " + Integer.toString(index + 1) + ". player: " + msg); + playerAnswerTextViews.get(index).setText("The answer of " + playerAnswers[index].getPlayerName() + ": " + msg); + } + } + + public static List<Question> readQuestions(InputStream inputStream) { + List<Question> loadedQuestions = new ArrayList<>(); + BufferedReader buffreader; + try { + buffreader = new BufferedReader(new InputStreamReader(inputStream)); + String line; + while ((line = buffreader.readLine()) != null) { + String[] parts = line.split("\t"); + Question question = new Question(parts); + loadedQuestions.add(question); + } + } catch (IOException e) { + e.printStackTrace(); } + return loadedQuestions; } } diff --git a/KvizServer/app/src/main/java/onlab/kvizserver/QuizUpActivity.java b/KvizServer/app/src/main/java/onlab/kvizserver/QuizUpActivity.java index d40ab16413d738ce1971fe2e5acf19a0ccaf78bc..b542017dbd4f3264e0f20d16db3edb8d2853c781 100644 --- a/KvizServer/app/src/main/java/onlab/kvizserver/QuizUpActivity.java +++ b/KvizServer/app/src/main/java/onlab/kvizserver/QuizUpActivity.java @@ -14,19 +14,21 @@ import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.IOException; +import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.util.ArrayList; +import java.util.Iterator; import java.util.List; import java.util.Timer; import java.util.TimerTask; -import onlab.kvizserver.model.MultipleChoiceQuestion; +import onlab.kvizserver.model.Question; public class QuizUpActivity extends AppCompatActivity { - private List<MultipleChoiceQuestion> questions = new ArrayList<>(); + private List<Question> questions; private int round = 0; private int numberOfPlayers; private final List<String> answers = new ArrayList<>(); @@ -34,6 +36,7 @@ public class QuizUpActivity extends AppCompatActivity { private int correctAnswer; private String questionString; private int[] playerScores; + private String[] playerNames; private List<BufferedReader> inputs = new ArrayList<>(); private List<PrintWriter> outputs = new ArrayList<>(); @@ -57,23 +60,25 @@ public class QuizUpActivity extends AppCompatActivity { updateConversationHandler = new Handler(); - BufferedReader buffreader; + InputStream inputStream = null; try { if (questionFileName == null) { - buffreader = new BufferedReader(new InputStreamReader(getAssets().open("multiple.txt"))); + inputStream = getAssets().open("multiple.txt"); } else { - buffreader = new BufferedReader(new InputStreamReader(new FileInputStream(new File(questionFileName)))); - } - String line; - while ((line = buffreader.readLine()) != null) { - String[] parts = line.split("\t"); - MultipleChoiceQuestion multipleChoiceQuestion = new MultipleChoiceQuestion( - parts[0], parts[1], parts[2], parts[3], parts[4]); - questions.add(multipleChoiceQuestion); + inputStream = new FileInputStream(new File(questionFileName)); } } catch (IOException e) { e.printStackTrace(); } + questions = GameActivity.readQuestions(inputStream); + + //nem feleletválasztós kérdések eltávolítása + Iterator<Question> it = questions.iterator(); + while( it.hasNext() ) { + Question q = it.next(); + if(q.getType() != Question.MULTIPLE_CHOICE) + it.remove(); + } questionText = (TextView) findViewById(R.id.QuestionText); answerTextViews = new ArrayList<>(); @@ -88,6 +93,11 @@ public class QuizUpActivity extends AppCompatActivity { playerAnswers = new int[numberOfPlayers]; + playerNames = new String[numberOfPlayers]; + for (int i=0;i<numberOfPlayers;i++) { + playerNames[i] = ClientHolder.get(i).getName(); + } + playerScores = new int[2]; for (int i=0;i<numberOfPlayers;i++) { @@ -132,7 +142,7 @@ public class QuizUpActivity extends AppCompatActivity { private void sendNextQuestion() { if (round < 7) { - MultipleChoiceQuestion question = questions.get(round); + Question question = questions.get(round); questionString = question.getQuestionText(); questionText.setText(questionString); @@ -156,7 +166,7 @@ public class QuizUpActivity extends AppCompatActivity { correctAnswerTextView.setText("The correct answer: "); for (int i=0;i<outputs.size();i++) { - playerAnswerTextViews.get(i).setText("The answer of the " + Integer.toString(i + 1) + ". player: "); + playerAnswerTextViews.get(i).setText("The answer of " + playerNames[i] + ": "); String message = "question##" + Integer.toString(playerScores[i]) + "##" + Integer.toString(playerScores[1-i]) + "##" + questionString + "##" + answers.get(0) + "##" + answers.get(1) @@ -303,9 +313,9 @@ public class QuizUpActivity extends AppCompatActivity { if (index == -1) { correctAnswerTextView.setText("The correct answer: " + answers.get(correctAnswer)); } else { - playerAnswerTextViews.get(index).setText("The answer of the " + Integer.toString(index + 1) + ". player: " + msg); + playerAnswerTextViews.get(index).setText("The answer of " + playerNames[index] + ": " + msg); playerScoreTextViews.get(index).setText( - "The score of the " + Integer.toString(index + 1) + ". player: " + Integer.toString(playerScores[index])); + "The score of " + playerNames[index] + ": " + Integer.toString(playerScores[index])); } } } diff --git a/KvizServer/app/src/main/java/onlab/kvizserver/model/GuessQuestion.java b/KvizServer/app/src/main/java/onlab/kvizserver/model/GuessQuestion.java deleted file mode 100644 index f716763d5d4329aa46b8b9f4d092031de371b017..0000000000000000000000000000000000000000 --- a/KvizServer/app/src/main/java/onlab/kvizserver/model/GuessQuestion.java +++ /dev/null @@ -1,19 +0,0 @@ -package onlab.kvizserver.model; - -public class GuessQuestion { - private String questionText; - private int correctAnswer; - - public GuessQuestion(String questionText, int correctAnswer) { - this.questionText = questionText; - this.correctAnswer = correctAnswer; - } - - public String getQuestionText() { - return questionText; - } - - public int getCorrectAnswer() { - return correctAnswer; - } -} diff --git a/KvizServer/app/src/main/java/onlab/kvizserver/model/MultipleChoiceQuestion.java b/KvizServer/app/src/main/java/onlab/kvizserver/model/MultipleChoiceQuestion.java deleted file mode 100644 index 1aac592530895bf20d463151902e1dd5451a9e70..0000000000000000000000000000000000000000 --- a/KvizServer/app/src/main/java/onlab/kvizserver/model/MultipleChoiceQuestion.java +++ /dev/null @@ -1,35 +0,0 @@ -package onlab.kvizserver.model; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -public class MultipleChoiceQuestion { - private String questionText; - private String correctAnswer; - private List<String> otherAnswers = new ArrayList<>(); - - public MultipleChoiceQuestion(String questionText, String correctAnswer, String ans2, String ans3, String ans4) { - this.questionText = questionText; - this.correctAnswer = correctAnswer; - otherAnswers.add(ans2); - otherAnswers.add(ans3); - otherAnswers.add(ans4); - } - - public String getQuestionText() { - return questionText; - } - - public String getCorrectAnswer() { - return correctAnswer; - } - - public List<String> getAnswers() { - List<String> list = new ArrayList<>(); - list.add(correctAnswer); - list.addAll(otherAnswers); - Collections.shuffle(list); - return list; - } -} diff --git a/KvizServer/app/src/main/java/onlab/kvizserver/model/PlayerAnswer.java b/KvizServer/app/src/main/java/onlab/kvizserver/model/PlayerAnswer.java new file mode 100644 index 0000000000000000000000000000000000000000..68c255f89cae010a925a7521582dfdd70b4ca008 --- /dev/null +++ b/KvizServer/app/src/main/java/onlab/kvizserver/model/PlayerAnswer.java @@ -0,0 +1,35 @@ +package onlab.kvizserver.model; + +public class PlayerAnswer { + private String playerName; + private int value; + private double time; + + public PlayerAnswer(String playerName) { + this.playerName = playerName; + } + + public String getPlayerName() { + return playerName; + } + + public void setPlayerName(String playerName) { + this.playerName = playerName; + } + + public int getValue() { + return value; + } + + public void setValue(int value) { + this.value = value; + } + + public double getTime() { + return time; + } + + public void setTime(double time) { + this.time = time; + } +} diff --git a/KvizServer/app/src/main/java/onlab/kvizserver/model/Question.java b/KvizServer/app/src/main/java/onlab/kvizserver/model/Question.java new file mode 100644 index 0000000000000000000000000000000000000000..acab7e71304a211e412a75c690f6f0e07bb675c9 --- /dev/null +++ b/KvizServer/app/src/main/java/onlab/kvizserver/model/Question.java @@ -0,0 +1,61 @@ +package onlab.kvizserver.model; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +public class Question { + private String topic; + private String questionText; + private String correctAnswer; + private List<String> otherAnswers = new ArrayList<>(); + private boolean enabled; + + public static final int MULTIPLE_CHOICE = 0; + public static final int GUESS = 1; + + public Question(String[] data) { + topic = data[0]; + questionText = data[1]; + correctAnswer = data[2]; + for (int i=3;i<data.length-1;i++) { + otherAnswers.add(data[i]); + } + enabled = data[data.length-1].equals("enabled"); + } + + public String getQuestionText() { + return questionText; + } + + public String getCorrectAnswer() { + return correctAnswer; + } + + public List<String> getAnswers() { + List<String> list = new ArrayList<>(); + list.add(correctAnswer); + list.addAll(otherAnswers); + Collections.shuffle(list); + return list; + } + + public String getTopic() { + return topic; + } + + public boolean isEnabled() { + return enabled; + } + + public int getType() { + if (otherAnswers.size() == 3) { + return MULTIPLE_CHOICE; + } else if (otherAnswers.size() == 0) { + return GUESS; + } else { + return -1; + } + } + +}