Example #1
0
class GameController(object):
    """
        GameController
        Das Spiel wird mit der Funktion :func:`__init__` gestartet
            - **Methoden**:
                * :func:`GameController.show`: Zeigt das GUI an
                * :func:`GameController.game_playing`: bekommt button und schaut ob es der richtige Button ist
                * :func:`GameController.updateStatistik`: aktualisiert die Statistik
                * :func:`GameController.reshuffle`: Zufällige Zahlen werden den Buttons zugewiesen
                * :func:`GameController.push_button_new_click`: neues Spiel wird gestarten
                * :func:`GameController.push_button_end_click`: Spiel wird geschlossen
        """
    def __init__(self):
        """
        Konstruktor
        """
        self.Dialog = QtWidgets.QMainWindow()
        self.view = GameView()
        self.model = GameModel()
        self.view.setupUi(self.Dialog)

    def show(self):
        """
        Zeigt das GUI des Spiels an
        :return: nichts
        """
        self.Dialog.show()
        self.reshuffle()
        self.view.pushButton_Neu.clicked.connect(
            partial(self.push_button_new_click))
        self.view.pushButton_End.clicked.connect(
            partial(self.push_button_end_click))

        for button in self.view.buttons:
            button.clicked.connect(partial(self.game_playing, button))

    def game_playing(self, p):
        """
        bekommt button und schaut ob es der richtige Button ist
        :param p: button der gedrückt wurde
        :type p: `QPushButton`
        :return: nichts
        """
        button = p
        if int(button.text()) == self.model.nextValue:
            button.setEnabled(False)
            self.model.nextValue += 1
            self.model.isCorrect += 1
            self.model.isOpen -= 1
        else:
            self.model.isWrong += 1
        self.model.isTotal += 1
        self.updateStatistik()

    def updateStatistik(self):
        """
        Aktualisiert die Statistik
        :return: nichts
        """
        self.view.lineEdit_0.setText(str(self.model.isOpen))
        self.view.lineEdit_1.setText(str(self.model.isCorrect))
        self.view.lineEdit_2.setText(str(self.model.isWrong))
        self.view.lineEdit_3.setText(str(self.model.isTotal))
        self.view.lineEdit_4.setText(str(self.model.Ngame))

    def reshuffle(self):
        """
        Zufällige Zahlen (0 - 14) werden den Buttons zugewiesen
        :return:  nichts
        """
        for button in self.view.buttons:
            button.setEnabled(True)
        i = 0
        buttonValues = []
        while i < 15:
            randnum = random.randrange(0, 15)
            if not (randnum in buttonValues):
                buttonValues.append(randnum)
                i += 1

        i = 0
        for button in self.view.buttons:
            button.setText(str(buttonValues[i]))
            i += 1

    def push_button_new_click(self):
        """
        Neues Spiel wird gestartet beim klicken des Neu-buttons
        :return: nichts
        """
        self.model.new_game()
        self.updateStatistik()
        self.reshuffle()

    def push_button_end_click(self):
        """
        Spiel wird beendet beim klicken des Ende-buttons
        :return: nichts
        """
        sys.exit()