PlayerGameWindow Module

Класс PlayerGameWindow включает в себя отрисовку окон игрока таких как:

  • Подключение
  • Ответ (кнопки разного цвета)
  • Результат (правильно/неправильно, рейтинг и место игрока)
  • Ожидание
PlayerGameWindow.delete_all_windgets()

Удляет все виджеты вызывая все функции:

PlayerGameWindow.delete_answer_windgets()

Удаляет все виджеты окна с ответами

PlayerGameWindow.delete_waiting_wingets()

Удаляет все виджеты окна ожидания

PlayerGameWindow.delete_true_false_wingets()

Удаляет все виджеты окна с результатом

PlayerGameWindow.delete_connect_windgets()

Удляет все виджеты окна подключения

PlayerGameWindow.answer_window()

Отрисовка окна ответа (кнопки разного цвета), используя QPushButton.

PlayerGameWindow.waiting_window()

Отрисовка ожидания, используя QVBoxLayout и QLabel.

PlayerGameWindow.true_false_window()

Отрисовка Результата (правильно/неправильно, рейтинг и место игрока), используя QVBoxLayout и QLabel.

PlayerGameWindow.connect_window()

Отрисовка Результата (правильно/неправильно, рейтинг и место игрока), используя QVBoxLayout и QPushButton и QLineEdit

PlayerGameWindow.game_end()

Открывает новое окно StartWindow

PlayerGameWindow.thread_signal(game, name)
Game:pin игры 6 значный
Name:имя игрока

Подключени к серверу. Открытие потока PlayerThread. После завершения работы потока вызывается on_finished()

PlayerGameWindow.change_window()
def change_window(self, value):
    func = value[0]s
    arguments = value[1:]
    func(*arguments)
Value:list [function, param1, param2, ..]

Запускает вункцию, нужна для управления из потока с помощью pyqtSignal(list)

PlayerGameWindow.on_finished()

Функция, которая запускается после завершения работы потока. Вызывает connect_window()

PlayerGameWindow.click()
def click(self):
    i = int(self.sender().objectName())
    self.waiting_window()
    self.API.ans(i)

Запускается при нажатие кнопки ответа

PlayerGameWindow.connect()

Запускает self.thread_signal(game, name) game и name взятые из окна connect_window

PlayerGameWindow.exit()

Открывает новое окно StartWindow

class PlayerGameWindow.PlayerThread
class PlayerThread(QThread):
    Signal = pyqtSignal(list)

    def __init__(self, game, name, window):
        super().__init__()
        self.window = window
        self.game = game
        self.name = name


    def run(self):
        self.window.API = api.PlayerAPI(URL, self.game, self.name)
        if self.window.API.hash_error():
            self.window.error = self.window.API.error
            return
        self.Signal.emit([self.window.waiting_window])

        self.window.API.wait()
        question_cnt = self.window.API.game_info()
        for i in range(question_cnt):
            info = self.window.API.question_info()
            self.Signal.emit([self.window.answer_window, info[0]])
            QtTest.QTest.qWait(info[1] * 1000)
            res = self.window.API.validate()
            self.Signal.emit([self.window.true_false_window, res["valid"], res["place"], res['score']])
            if i + 1 != question_cnt:
                self.window.API.wait()
        QtTest.QTest.qWait(2000) # 2 s