예제 #1
0
def Fase1(tabuleiro, cor_humano):
    pecasJogadorW = 9
    pecasJogadorB = 9
    imprimirTabuleiro(tabuleiro)

    while pecasJogadorW > 0 and pecasJogadorB > 0:
        if cor_humano == 'W':
            print "\nTurno do jogador humano (W)"
            pecasJogadorW = jogadaHumano('W', pecasJogadorW, tabuleiro)
            imprimirTabuleiro(tabuleiro)

            print "\nTurno do jogador IA (B)"
            pos = minimax.alphaBetaSearch(tabuleiro, 'B', sucessores, tomarAcao, ehTerminal)
            tabuleiro[pos[0]][pos[1]] = 'B'
            pecasJogadorB -= 1
            imprimirTabuleiro(tabuleiro)
            print "Posicao escolhida pela IA: ", pos[0], pos[1]
            if temMoinho(pos[0], pos[1], 'B', tabuleiro):
                print "Jogador IA formou um moinho"
                melhor_pos = minimax.removerPeca(tabuleiro, 'B')
                tabuleiro[melhor_pos[0]][melhor_pos[1]] = 'o'
                imprimirTabuleiro(tabuleiro)
                print "Peca retirada pela IA: ", melhor_pos[0], melhor_pos[1]
        else:
            print "\nTurno do jogador IA (W)"
            pos = minimax.alphaBetaSearch(tabuleiro, 'W', sucessores, tomarAcao, ehTerminal)
            tabuleiro[pos[0]][pos[1]] = 'W'
            pecasJogadorW -= 1
            imprimirTabuleiro(tabuleiro)
            print "Posicao escolhida pela IA: ", pos[0], pos[1]
            if temMoinho(pos[0], pos[1], 'W', tabuleiro):
                print "\nJogador IA formou um moinho"
                melhor_pos = minimax.removerPeca(tabuleiro, 'W')
                tabuleiro[melhor_pos[0]][melhor_pos[1]] = 'o'
                imprimirTabuleiro(tabuleiro)
                print "Peca retirada pela IA: ", melhor_pos[0], melhor_pos[1]

            print "\nTurno do jogador humano (B)"
            pecasJogadorB = jogadaHumano('B', pecasJogadorB, tabuleiro)
            imprimirTabuleiro(tabuleiro)
예제 #2
0
def Fase2_3(tabuleiro, cor_humano):
    imprimirTabuleiro(tabuleiro)
    jogadas = [(), (), (), ()]
    n_jogadas = 0

    while not ehTerminal(tabuleiro, float('inf')):
        if cor_humano == 'W':
            print "\nTurno do jogador humano (W)"
            acao = jogadaHumano(tabuleiro, 'W')
            jogadas[divmod(n_jogadas, 4)[1]] = acao
            n_jogadas += 1
            imprimirTabuleiro(tabuleiro)

            print "\nTurno do jogador IA (B)"
            acao = minimax.alphaBetaSearch(tabuleiro, 'B', sucessores, tomarAcao, ehTerminal)
            if acao is None or len(acao) != 2:
                print "Jogador preto nao pode fazer mais movimentos.\n\nJogador branco venceu!"
                sys.exit(-1)
            acao_i = acao[0]
            acao_f = acao[1]
            tabuleiro[acao_i[0]][acao_i[1]] = 'o'
            tabuleiro[acao_f[0]][acao_f[1]] = 'B'
            n_jogadas += 1
            imprimirTabuleiro(tabuleiro)
            print "Jogada escolhida pela IA: ", acao_i[0], acao_i[1], acao_f[0], acao_f[1]
            jogadas[divmod(n_jogadas, 4)[1]] = acao
            if temMoinho(acao_f[0], acao_f[1], 'B', tabuleiro):
                print "\nJogador IA formou um moinho"
                melhor_pos = minimax.removerPeca(tabuleiro, 'B')
                tabuleiro[melhor_pos[0]][melhor_pos[1]] = 'o'
                imprimirTabuleiro(tabuleiro)
                print "Peca retirada pela IA: ", melhor_pos[0], melhor_pos[1]
        else:
            print "\nTurno do jogador IA (W)"
            acao = minimax.alphaBetaSearch(tabuleiro, 'W', sucessores, tomarAcao, ehTerminal)
            if acao is None or len(acao) != 2:
                print "Jogador branco nao pode fazer mais movimentos.\n\nJogador preto venceu!"
                sys.exit(-1)
            acao_i = acao[0]
            acao_f = acao[1]
            tabuleiro[acao_i[0]][acao_i[1]] = 'o'
            tabuleiro[acao_f[0]][acao_f[1]] = 'W'
            n_jogadas += 1
            imprimirTabuleiro(tabuleiro)
            print "Jogada escolhida pela IA: ", acao_i[0], acao_i[1], acao_f[0], acao_f[1]
            jogadas[divmod(n_jogadas, 4)[1]] = acao
            if temMoinho(acao_f[0], acao_f[1], 'B', tabuleiro):
                print "\nJogador IA formou um moinho"
                melhor_pos = minimax.removerPeca(tabuleiro, 'B')
                tabuleiro[melhor_pos[0]][melhor_pos[1]] = 'o'
                imprimirTabuleiro(tabuleiro)
                print "Peca retirada pela IA: ", melhor_pos[0], melhor_pos[1]

            print "\nTurno do jogador humano(B)"
            acao = jogadaHumano(tabuleiro, 'B')
            jogadas[divmod(n_jogadas, 4)[1]] = acao
            n_jogadas += 1
            imprimirTabuleiro(tabuleiro)

        ready = True
        for jogada in jogadas:
            if len(jogada) != 2:
                ready = False
        if ready:
            if jogada[0][0] == jogada[2][1] and jogada[0][1] == jogada[2][0] and jogada[1][0] == jogada[3][1] and \
                            jogada[1][1] == jogada[3][0]:
                # empate
                print "\nEmpatou!"
                sys.exit(0)
    if len(retornaPosicoes(tabuleiro, 'W')) > len(retornaPosicoes(tabuleiro, 'B')):
        print "\n\nJogador branco venceu!"
    else:
        print "\n\nJogador preto venceu!"