def escolherProximaAcao(self): if not self.resolvido: self.caminho = self.buscaGulosa(self.borda, self.tabuleiro, self.percorridos, self.caminho) acao = AcaoJogador.mover(self.caminho[0][3][0], self.caminho[0][3][1]) self.caminho.pop(0) return acao
def escolherProximaAcao(self): #Verifica se o jogo ja foi resolvido if not self.resolvido: self.caminho = self.buscaBfs(self.borda, self.tabuleiro, self.percorridos, self.caminho) acao = AcaoJogador.mover(self.caminho[0][3][0], self.caminho[0][3][1]) self.caminho.pop(0) return acao
def escolherProximaAcao(self): self.borda.insert(0, [self.tabuleiro, 0]) altura = 0 #Verifica se o jogo ja foi resolvido if self.resolvido is False: #Percorre todos estados da borda até encontrar o estado final while len(self.borda) > 0: #Verifica se a altura do estado aberto está dentro do padrão exigido if self.borda[0][1] <= int(self.profundidade): altura = self.borda[0][1] estado_temp = self.borda.pop(0)[0] else: self.borda.pop(0) altura = self.borda[0][1] estado_temp = self.borda.pop(0)[0] self.percorridos.append(estado_temp) if self.isFim(estado_temp) == True: self.resolvido = True print('Resolvi o puzzle!') print('Tentativas: ', len(self.jogadas)) self.tabuleiro.pop(3) #Após encontrar o resultado, encontra o caminho até o final desejado # e os adiciona na variável caminho while self.caminho[0][:3] != self.tabuleiro: ult_percorrido = self.percorridos[-1] if self.isFim([ult_percorrido[0], ult_percorrido[1], ult_percorrido[2]]) == True: self.caminho.insert(0,ult_percorrido[3]) else: for percorrido in self.percorridos: if percorrido[:3] == self.caminho[0][:3]: if percorrido[:3] is not self.caminho: self.caminho.insert(0, percorrido[3]) self.percorridos.pop(-1) break #Se não for o estado final, gera os estados filhos e os adiciona ao início borda else: filhos = [ self.gerarEstados(opcao, estado_temp, False) for opcao in self.validarOpcoes(estado_temp) ] for filho in filhos: ja_percorrido = False for percorrido in self.percorridos: if filho[:3] == percorrido[:3]: ja_percorrido = True if ja_percorrido == False: self.borda.insert(0, [filho, altura]) altura = altura + 1 acao = AcaoJogador.mover(self.caminho[0][3][0], self.caminho[0][3][1]) self.caminho.pop(0) return acao
def escolherProximaAcao(self): jogada = None while not jogada: jogada = input( "\nDigite a direção que deseja mover (e,d,c,b): ").strip() try: direcao = AgentePrepostoESHumano.parse_jogada(jogada) except ValueError: jogada = None print("Jogada inválida.") return AcaoJogador.mover(direcao)
def escolherProximaAcao(self): if not self.sol: no_sol = busca_arvore(self.problema, self.tipo_agente) self.sol = no_sol.caminho_acoes() if not self.sol: raise Exception( f'Agente {self.tipo_agente.value} não encontrou solução.') acao = self.sol.pop(0) print(f'\nPróxima ação é mover para "{acao.direcao}".') time.sleep(1) direcao = AgenteAut.traduzir_acao_jogo(acao) return AcaoJogador.mover(direcao)
def escolherProximaAcao(self): from acoes import AcaoJogador # try: i, j = (int(s) for s in input( "Qual peça deseja mover (linhas, coluna)? ").split(',', 2)) return AcaoJogador.mover(i, j)