# Recebendo e decodificando a jogada do adversário. print("\n\tEsperando jogada do adversário.... Aguarde.") data = conn.recv(1024) result = data.decode() # Se os dados recebidos foram corrompidos ou se foi recebido um "EXIT", # então imprime uma mensagem dizendo que o cliente se desconectou, # reseta o tabuleiro e encerra o laço de conexão. if not data or result == "EXIT": print('Participante ', client_host, ' desconectou.') v.resetBoard() # Reseta o tabuleiro break # Escreve 'X' (jogada do cliente) na posição recebida. v.setCoord(int(result[0]) - 1, int(result[2]) - 1, "X") v.printBoard() # Verifica se houve game over com a jogada do cliente. Em caso positivo # significa que o cliente ganhou, imprime mensagem dizendo que o servi- # dor foi derrotado e que o cliente está sendo desconectado. Encerra o # laço de conexão. if (v.isGameOver()): print("\n\t:::::Você foi Derrotado! Boa sorte na próxima!") print("\n\t::Fim de Jogo") print('\tParticipante ', client_host, ' desconectado.\n') break # Se não houve game over (ninguém venceu), então verifica se houve algu- # ma mudança na flag indicativa de empate. Em caso positivo imprime men- # sagem de que houve empata e que o cliente está sendo desconectado. En-
# Enquanto a jogada não for válida, isto é, não estiver no formato váli- # do ou indicar uma posição já preenchida do tabuleiro, então solicita # nova coordenada. while not v.isValid(coord): coord = input("\tDigite uma coordenada válida: ") # Se a jogada lida tiver sido "EXIT", então encerra a o laço de conexão # com o servidor. if coord == "EXIT": print('\tAplicação encerrada.\n\tDesconectou-se.\n') break # Se a jogada lida não tiver sido um "EXIT", então preenche a coord e im- # prime o tabuleiro v.setCoord(int(coord[0]) - 1, int(coord[2]) - 1, "X") v.printBoard() # Envia a jogada, validada e codificada, para o servidor socket_tcp.send(coord.encode()) # Se, com a jogada do cliente, houve game over, então o cliente venceu. if v.isGameOver(): print("\n\t:::::Você Ganhou! Parabéns!") print("\n\t::Fim de Jogo") break # Se não houve game over, então verifica se houve empate. if (v.isDraw()): print("\n\t:::::Jogo Empatado!") print("\n\t::Fim de Jogo")