Esempio n. 1
0
 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
Esempio n. 2
0
 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
Esempio n. 4
0
    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)
Esempio n. 5
0
    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)
Esempio n. 6
0
 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)