1_2_oder_3_repos/src_folder/BackEnd/game.py

75 lines
2.8 KiB
Python

from Database.database import QuestionDataBase
import random
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) -> 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) -> 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 = []
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))