from Database.database import QuestionDataBase import random import re class Game: def __init__(self, teamsize=0, correct_field=0): self.teamsize = teamsize self.scoreboard = {'score_red': 0, 'score_green': 0, 'score_blue': 0 } self.questions = QuestionDataBase('src_folder/BackEnd/Database/EinsZweiOderDrei.db') self.available_questions = list(range(1, self.questions.num_rows())) self.field = correct_field self.question = {} self.final_score = {} def set_teamsize(self, teamsize: int): self.teamsize = teamsize def add_score(self, current_score: dict): for key in self.scoreboard.keys(): if key in current_score.keys(): self.scoreboard[key] = self.scoreboard[key] + current_score[key] return self.scoreboard def set_scoreboard(self, current_scores: dict): self.scoreboard = self.add_score(current_scores) return self.scoreboard def reset_game(self): self.scoreboard = {'score_red': 0, 'score_green': 0, 'score_blue': 0 } def get_question(self): 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]) self.question = dict(zip(field_names, question)) self.shuffle_answeroptions() self.add_correct_field() def shuffle_answeroptions(self): answeroptions = ['Answeroption_1', 'Answeroption_2', 'Answeroption_3'] keys = [] print(self.question) for answer in answeroptions: keys.append(self.question[answer]) random.shuffle(keys) for index, answer in enumerate(answeroptions): self.question[answer] = keys[index] def add_correct_field(self): answeroption = ['Answeroption_1', 'Answeroption_2', 'Answeroption_3', 'Correct_answeroption'] for i in range(0, len(answeroption) -1): if self.question[answeroption[-1]] == self.question[answeroption[i]]: index = answeroption.index(answeroption[i]) + 1 self.set_correct_field(index) break self.question.update([('Correct_field', index)]) def set_correct_field(self, correct_field: int): self.field = correct_field def final_result(self): self.final_score = dict(sorted(self.scoreboard.items(), key=lambda x: x[1], reverse=True))