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)
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!"