from random import choice from neuesquiz_data import * DEBUG = True class Controller(): """ Controller of Application Schnittstelle zwischen Daten und Anzeige Steuerung des Programms """ def __init__(self, app): self.app = app self.data = Quizdata(self) self.sample_size = 4 self.current_selection = dict() # {num: "name of president, …} self.chosen_element = dict() # {num: "name of president"} single element self.count_all = 0 self.count_correct = 0 self.test() self.make_selection() def test(self): print("===TEST===") self.data.test_get_random_sample() print("===TEST===") def reset_counter(self): self.count_all = 0 self.count_correct = 0 def raise_counter(self, correct: bool): self.count_all = self.count_all + 1 if correct: self.count_correct = self.count_correct + 1 else: pass return 0 def get_count_all(self): return self.count_all def get_count_correct(self): return self.count_correct def make_selection(self): # Select sample from the data sample_size = self.sample_size self.current_selection = self.data.get_random_sample_dict(sample_size) # Select element of the sample to be asked for self.chosen_element = self.data.get_single_from_sample_dict(self.current_selection) # +++ DEBUG if DEBUG: print("Dict for selection: {}".format(self.current_selection)) print("Correct element: {}".format(self.chosen_element)) # --- DEBUG def get_key_of_chosen(self): key = list(self.chosen_element.keys())[0] return key # TODO: What happens if answer is selcted? def select_answer(self, event=None): pass def check_user_selection(self): # Set app to examination mode self.app.change_state_examine() # Get selection of user user_selection = int(self.app.selected.get()) # Get key of chosen element correct_answer = int(self.get_key_of_chosen()) #+++DEBUG if DEBUG: print("correct answer would be: {}".format(correct_answer)) print("user selected element: {}".format(user_selection)) #---DEBUG if user_selection is correct_answer: self.raise_counter(correct=True) # +++ DEBUG if DEBUG: print("correct") # --- DEBUG self.app.set_response_correct() self.app.update_counter() else: self.raise_counter(correct=False) # +++ DEBUG if DEBUG: print("incorrect") # --- DEBUG self.app.set_response_incorrect() self.app.update_counter() self.start_timer_next() return 0 def start_timer_next(self): # automatisches Stellen der nächsten Frage seconds_to_next = 5 self.timer = self.app.after(seconds_to_next*1000,self.next_question) #+++DEBUG if DEBUG: print("timer of {} seconds to next question started".format(seconds_to_next)) #---DEBUG return self.timer def stop_timer_next(self): self.app.after_cancel(self.timer) #+++DEBUG if DEBUG: print("timer stopped") #---DEBUG return 0 def next_question(self): self.stop_timer_next() self.make_selection() self.app.update_answers() self.app.change_state_user_input() # TODO: implement win def win(self): print("Gewonnen!") pass # TODO: reset of all elements def reset(self): pass