2023-06-10 11:10:33 +02:00
|
|
|
from Database.database import QuestionDataBase
|
2023-06-16 19:20:29 +02:00
|
|
|
import random
|
2023-06-10 11:10:33 +02:00
|
|
|
|
2023-05-19 10:02:29 +02:00
|
|
|
|
|
|
|
|
|
|
|
class Game:
|
2023-05-23 19:14:00 +02:00
|
|
|
def __init__(self, teamsize=0, correct_field=0):
|
2023-05-19 10:02:29 +02:00
|
|
|
self.teamsize = teamsize
|
|
|
|
self.scoreboard = {'score_red': 0,
|
2023-05-26 19:55:32 +02:00
|
|
|
'score_green': 0,
|
|
|
|
'score_blue': 0
|
|
|
|
}
|
2023-05-19 10:02:29 +02:00
|
|
|
self.questions = QuestionDataBase('src_folder/BackEnd/Database/EinsZweiOderDrei.db')
|
|
|
|
self.available_questions = list(range(1, self.questions.num_rows()))
|
2023-05-23 19:14:00 +02:00
|
|
|
self.field = correct_field
|
|
|
|
self.question = {}
|
2023-05-26 19:55:32 +02:00
|
|
|
self.final_score = {}
|
2023-05-19 10:02:29 +02:00
|
|
|
|
|
|
|
def set_teamsize(self, teamsize: int):
|
|
|
|
self.teamsize = teamsize
|
|
|
|
|
2023-06-16 19:20:29 +02:00
|
|
|
def add_score(self, current_score: dict) -> dict:
|
2023-05-19 10:02:29 +02:00
|
|
|
for key in self.scoreboard.keys():
|
|
|
|
if key in current_score.keys():
|
|
|
|
self.scoreboard[key] = self.scoreboard[key] + current_score[key]
|
|
|
|
return self.scoreboard
|
2023-05-22 20:43:51 +02:00
|
|
|
|
2023-06-16 19:20:29 +02:00
|
|
|
def set_scoreboard(self, current_scores: dict) -> dict:
|
2023-05-22 20:43:51 +02:00
|
|
|
self.scoreboard = self.add_score(current_scores)
|
|
|
|
return self.scoreboard
|
2023-05-26 19:55:32 +02:00
|
|
|
|
2023-05-19 10:02:29 +02:00
|
|
|
def reset_game(self):
|
2023-05-26 19:55:32 +02:00
|
|
|
self.scoreboard = {'score_red': 0,
|
|
|
|
'score_green': 0,
|
|
|
|
'score_blue': 0
|
|
|
|
}
|
2023-05-19 10:02:29 +02:00
|
|
|
|
2023-05-26 19:55:32 +02:00
|
|
|
def get_question(self):
|
2023-05-22 20:43:51 +02:00
|
|
|
questions = self.questions.cursor.execute("Select * from Questions")
|
|
|
|
field_names = [i[0] for i in questions.description]
|
|
|
|
|
|
|
|
questions_data = questions.fetchall()
|
|
|
|
random_question_number = random.choice(self.available_questions)
|
|
|
|
self.available_questions.remove(random_question_number)
|
|
|
|
question= list(questions_data[random_question_number])
|
2023-05-23 19:14:00 +02:00
|
|
|
self.question = dict(zip(field_names, question))
|
2023-05-26 19:55:32 +02:00
|
|
|
self.shuffle_answeroptions()
|
2023-05-23 19:14:00 +02:00
|
|
|
self.add_correct_field()
|
2023-05-26 19:55:32 +02:00
|
|
|
|
|
|
|
def shuffle_answeroptions(self):
|
|
|
|
answeroptions = ['Answeroption_1', 'Answeroption_2', 'Answeroption_3']
|
|
|
|
keys = []
|
|
|
|
|
|
|
|
for answer in answeroptions:
|
|
|
|
keys.append(self.question[answer])
|
|
|
|
random.shuffle(keys)
|
|
|
|
|
|
|
|
for index, answer in enumerate(answeroptions):
|
|
|
|
self.question[answer] = keys[index]
|
2023-05-23 19:14:00 +02:00
|
|
|
|
|
|
|
def add_correct_field(self):
|
2023-05-22 20:43:51 +02:00
|
|
|
answeroption = ['Answeroption_1', 'Answeroption_2', 'Answeroption_3', 'Correct_answeroption']
|
|
|
|
for i in range(0, len(answeroption) -1):
|
2023-05-23 19:14:00 +02:00
|
|
|
if self.question[answeroption[-1]] == self.question[answeroption[i]]:
|
2023-05-22 20:43:51 +02:00
|
|
|
index = answeroption.index(answeroption[i]) + 1
|
2023-05-23 19:14:00 +02:00
|
|
|
self.set_correct_field(index)
|
2023-05-22 20:43:51 +02:00
|
|
|
break
|
2023-05-23 19:14:00 +02:00
|
|
|
self.question.update([('Correct_field', index)])
|
2023-05-22 20:43:51 +02:00
|
|
|
|
2023-05-23 19:14:00 +02:00
|
|
|
def set_correct_field(self, correct_field: int):
|
|
|
|
self.field = correct_field
|
2023-05-22 20:43:51 +02:00
|
|
|
|
2023-05-26 19:55:32 +02:00
|
|
|
def final_result(self):
|
|
|
|
self.final_score = dict(sorted(self.scoreboard.items(), key=lambda x: x[1], reverse=True))
|