while i < numPlayers: # O trecho abaixo envia o jogador vencedor time.sleep(.1) (match.getPlayer(i).getSocket()).send(str(winner).encode('utf8')) i += 1 # Iniciando um socket para receber conexões TCP serverSocket = startTCPServer(SERVER_PORT) while True: # Criando uma nova partida partida = Partida(NUM_PLAYERS, BOARD_DIMEN) # Mostrando os valores dispostos no tabuleiro Utils.apresentaTabuleiro(partida.board.values, BOARD_DIMEN) # Iniciando conexões com os clientes # broadcast funciona com índice. Utilizado em transmissões para todos jogadores broadcast = 0 while broadcast < partida.getPlayersNumber(): print("Aguarnando nova conexão") connectionSocket, address = serverSocket.accept() partida.addPlayer(broadcast, connectionSocket, address) print("Nova conexão estabelecida com: ", address) # Enviando identificação para usuário time.sleep(.1) (partida.getPlayer(broadcast).getSocket()).send( str(broadcast).encode('utf8')) broadcast += 1
# Recebendo placar inicial placar = clientSocket.recv(4096) placar = pickle.loads(placar) # Recebendo o jogadaor da vez jogadorVez = clientSocket.recv(4096).decode('utf8') # Verifica se ainda há partida if jogadorVez == "-1": break if coord1 == "": print("Iniciando patida!\n") # Apresentando o tabuleiro e placar recebidos Utils.apresentaTabuleiro(tabuleiro, int(dimen)) print(placar) # PRIMEIRA PEÇA while True: # Verifica se cliente é o jogador da vez if jogadorVez == idJogador: # Indica que é a vez deste cliente print("Sua vez, jogador " + str(int(jogadorVez)+1) + "") # As coordenadas serão tradadas como string, pois a trasmissão e recepção(socket) é de iplementação mais fácil # Solicita coordenadas para usuário coord1 = getCoordinates(int(dimen)) # Enquanto as coordenadas forem falsas (inválidas), # o programa cliente continuará pedindo por peças válidas while (coord1 == False): coord1 = getCoordinates(int(dimen))