Esempio n. 1
0
class CartinhaDeAmor:
    def __init__(self):
        #self.__interfaceUsuario = InterfaceTexto()
        self.__interfaceUsuario = InterfaceVisual()
        self.__interfaceRede = InterfaceMasterMind()

    def main(self):
        self.__preparativos()

    # criar server
    def __criarServer(self, nJogadores):
        self.__server = Server(self.__interfaceRede)
        self.__server.start()

        self.__server.esperarEntrarJogadores(nJogadores)
        # iniciar partida
        self.__server.iniciarJogo()
        # fim
        self.__server.desligar()

    def __entrarJogo(self):
        if self.__online:
            host_ip = self.__interfaceUsuario.entrarIpHost(
                self.__interfaceRede.getIp() if self.__online else None)
        else:
            host_ip = "localhost"
        self.__controleCliente = ControleCliente(self.__interfaceRede,
                                                 self.__interfaceUsuario)
        self.__controleCliente.setHostIp(host_ip)
        self.__controleCliente.conectarServer()
        # criar jogador
        self.__controleCliente.criarJogador()
        #
        self.__controleCliente.main()
        # fim
        self.__fim()

    def __preparativos(self):
        self.__online, self.__temServer = self.__interfaceUsuario.esperarPartida(
        )
        if self.__temServer:
            nJogadores = self.__interfaceUsuario.numeroJogadores()
            self.__serverThread = Thread(target=self.__criarServer,
                                         args=(nJogadores, ))
            self.__serverThread.daemon = True
            self.__serverThread.start()
            self.__interfaceUsuario.esperarandoJogadores()
        self.__entrarJogo()

    def __fim(self):
        self.__controleCliente.desligar()
        if self.__temServer:
            self.__serverThread.join()