-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.py
108 lines (91 loc) · 4.47 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
# Autor: Victor Nielsen Ribeirete (1811545)
# Horas Trabalhadas: 20 Horas
from PyQt5.QtCore import pyqtSlot, pyqtSignal, QObject
from PyQt5.QtGui import QImage, QPixmap
from PyQt5.QtWidgets import QApplication, QMainWindow, QFileDialog, QLabel, QColorDialog, QMainWindow
from Interface.Menu import Menu
from Interface.Regras import Regras
from Interface.Historico import Historico
from Interface.Historico_Modulo import Historico_Modulo
from Interface.Tabuleiro import Tabuleiro
from Interface.FimdeJogo import FimdeJogo
import sys
import jogadorPeca
import partida
import bd
import os
__all__ = ["interface","validaPartida","abreRegras"]
"""
Gera classe somente para lidar com os sinais enviados entre as interfaces.
É necessário herdar as propriedades do QObject para trabalhar com os eventos
"""
class Interface(QObject):
IniciaPartida = pyqtSignal()
CriaJogador = pyqtSignal(list,list)
PartidaInvalida = pyqtSignal()
NovaJogada = pyqtSignal(bool)
def __init__(self):
super(Interface, self).__init__()
self.menu = Menu()
self.regras = Regras()
self.historico = Historico()
partidas = bd.recuperaPartida()
if partidas is not None:
for tupla in partidas:
partida = list(tupla)
exec("partida_"+str(partida[0])+" = Historico_Modulo(partida)")
exec("self.historico.verticalLayoutScrollArea.addWidget(partida_"+str(partida[0])+")")
self.tabuleiro = Tabuleiro()
self.fimDeJogo = FimdeJogo()
self.fimDeJogo.pushButtonExit.clicked.connect(quit)
self.menu.StartMatchSignal.connect(validaPartida)
self.menu.pushButtonRules.clicked.connect(abreRegras)
self.menu.pushButtonHistory.clicked.connect(abreHistorico)
self.PartidaInvalida.connect(self.menu.invalidMatch)
self.CriaJogador.connect(jogadorPeca.criaJogador)
self.menu.show()
#Recebe os nomes e cores dos jogadores providos pela inteface do Menu e checa se são todos diferentes para validar ou não a partida
@pyqtSlot(list,list)
def validaPartida(nomesJogadores,coresJogadores):
numJogadores= len(nomesJogadores)
if numJogadores == 2:
if (coresJogadores[0] != coresJogadores[1]) and (nomesJogadores[0] != nomesJogadores[1]) and (nomesJogadores[0] != "" and nomesJogadores[1] != ""):
interface.CriaJogador.emit(nomesJogadores,coresJogadores)
partida.iniciaPartida()
interface.menu.close()
return 0
elif numJogadores == 3:
if (coresJogadores[0] != coresJogadores[1] and coresJogadores[0] != coresJogadores[2] and coresJogadores[1] != coresJogadores[2]) and (nomesJogadores[0] != nomesJogadores[1] and nomesJogadores[0] != nomesJogadores[2] and nomesJogadores[1] != nomesJogadores[2]) and (nomesJogadores[0] != "" and nomesJogadores[1] != "" and nomesJogadores[2] != ""):
interface.CriaJogador.emit(nomesJogadores,coresJogadores)
interface.menu.close()
partida.iniciaPartida()
return 0
elif numJogadores == 4:
if (coresJogadores[0] != coresJogadores[1] and coresJogadores[0] != coresJogadores[2] and coresJogadores[0] != coresJogadores[3] and coresJogadores[1] != coresJogadores[2] and coresJogadores[1] != coresJogadores[3] and coresJogadores[2] != coresJogadores[3]) and (nomesJogadores[0] != nomesJogadores[1] and nomesJogadores[0] != nomesJogadores[2] and nomesJogadores[0] != nomesJogadores[3] and nomesJogadores[1] != nomesJogadores[2] and nomesJogadores[1] != nomesJogadores[3] and nomesJogadores[2] != nomesJogadores[3]) and (nomesJogadores[0] != "" and nomesJogadores[1] != "" and nomesJogadores[2] != "" and nomesJogadores[3] != ""):
interface.CriaJogador.emit(nomesJogadores,coresJogadores)
interface.menu.close()
partida.iniciaPartida()
return 0
interface.PartidaInvalida.emit()
return 1
#Abre a interface com as regras do jogo
@pyqtSlot()
def abreRegras():
try:
interface.regras.show()
return 0
except:
return 1
#Irá abrir a interface com o histórico de partidas com os nomes dos jogadores de cada partida e o vencedor
@pyqtSlot()
def abreHistorico():
try:
interface.historico.show()
return 0
except:
return 1
app = QApplication(sys.argv)
interface = Interface()
if __name__ == "__main__":
bd.criarDataBase()
sys.exit(app.exec_())