Exemplo n.º 1
0
 def __init__(self, gameTree=None):
     self.tabuleiro = Tabuleiro('Misere')
     self.nomeJogo = 'Misere'
     self.arvore = gameTree
     self.ultimaJogada = (
         0, 0
     )  # Ultima jogada serve para checar se o jogo encerrou no método fimDeJogo
Exemplo n.º 2
0
def ValidarJogada(l, c, cont):
    global trava
    try:
        l = int(l)
        c = int(c)
    except ValueError:
        os.system('cls')
        print()
        print(
            Fore.YELLOW +
            "  Posição invalida, informe um número inteiro para as posições!" +
            Fore.RESET)
        Tabuleiro.tabuleiro()
        return FALSE
    cont = int(cont)
    if (l >= 0 and l <= 2) and (c >= 0 and c <= 2):
        if (Tabuleiro.tab[l][c] == "     "):
            trava = FALSE
            return ValidarPeca(cont)
        else:
            return MovimentarPeca(l, c, cont)
    else:
        os.system('cls')
        print()
        print(Fore.YELLOW +
              "  JOGADA INVÁLIDA, FAVOR REALIZAR UM MOVIMENTO VALIDO!" +
              Fore.RESET)
        Tabuleiro.tabuleiro()
        return FALSE
Exemplo n.º 3
0
def jogo_do_galo():
            
    print('Vamos jogar ao jogo do galo!')
    primeiro = input("Se pretender que o computador seja o primeiro a jogar\
    introduza 'p': ")
    
    
    tab = Tabuleiro()
    if primeiro == 'p':
        PCplay = jogaGalo(tab)
        flag = True
        
    else:
        flag = False
        
    k = 0
    
    while not tab.isFinished():
        if k % 2 == 0:
            valor = 'X'
                    
        else:
            valor = 'O'
        
        if (k % 2 == 0 and not flag) or (k%2 != 0 and flag): 
            time.sleep(2)
            coord = askForPlay()
                
            while not (coord in tab.emptyPositions()):
                print('Jogada invalida.')
                coord = askForPlay() 
                
        else:
            time.sleep(2)
            print('O computador joga: ')
            if (k == 0 and flag) or (k == 1 and not flag):
                coord = PCplay.nextPlay(None)
            else:
                coord = PCplay.nextPlay(coord)
                
        tab.setPosition(coord, valor)
        
        if k == 0 and not flag:
            PCplay = jogaGalo(tab)        
                                
        print(tab)
                 
            
        k += 1
            
    return None
Exemplo n.º 4
0
def forcaBruta(n_linhas, n_colunas, n_bombas):
    vitorias = 0
    derrotas = 0
    jogos = 1

    while vitorias == 0:
        print('Jogo', jogos)
        print('Placar')
        print('Vitorias', vitorias, "x", derrotas, 'Derrotas')
        tabuleiro = Tabuleiro.montarTabuleiroCompleto(qtdLinhasTabela, qtdColunasTabela, qtdBombas)
        Tabuleiro.imprimirTabuleiro(qtdLinhasTabela, tabuleiro)

        for reps in range((n_linhas * n_colunas) - n_bombas):
            lista = ManipulacaoTabuleiro.listarQuadradosInativos(n_linhas, n_colunas, tabuleiro)
            print(lista)
            numQuadradoSorteado = random.choice(lista)
            quadradoSorteado = ManipulacaoTabuleiro.encontrarQuadradoPeloNumero(numQuadradoSorteado, n_linhas, n_colunas, tabuleiro)
            print("Clique -", reps, "|Posição -", numQuadradoSorteado, "|Quadrado-", quadradoSorteado)
            status = ManipulacaoTabuleiro.click(quadradoSorteado[0], quadradoSorteado[1], tabuleiro, n_linhas, n_colunas)
            if status == 'interromper':
                print('Game Over')
                Tabuleiro.imprimirTabuleiro(qtdLinhasTabela, tabuleiro)
                derrotas = derrotas + 1
                break
            if (reps + 1) == ((n_linhas * n_colunas) - n_bombas):
                vitorias = 1
        jogos = jogos + 1

    print('Vitorias', vitorias, "x", derrotas, 'Derrotas')
    Tabuleiro.imprimirTabuleiro(qtdLinhasTabela, tabuleiro)
Exemplo n.º 5
0
def testeTabuleirosDiferentes():
    if qtdLinhasTabela <= 9 and qtdColunasTabela <= 9 and qtdBombas <= 10:
        nivel = 'Iniciante'
    if qtdLinhasTabela <= 16 and qtdColunasTabela <= 16 and qtdBombas <= 40:
        nivel = 'Intermediario'
    if qtdLinhasTabela <= 30 and qtdColunasTabela <= 16 and qtdBombas <= 99:
        nivel = 'Avancado'

    tabuleiros1 = []
    tabuleiros2 = []
    tabuleiros3 = []
    i = 0
    while i < qtdTabuleiros:
        tabuleiros1.append(Tabuleiro.montarTabuleiroCompleto(qtdLinhasTabela, qtdColunasTabela, qtdBombas))
        i = i + 1
    i = 0
    while i < qtdTabuleiros:
        tabuleiros2.append(Tabuleiro.montarTabuleiroCompleto(qtdLinhasTabela, qtdColunasTabela, qtdBombas))
        i = i + 1
    i = 0
    while i < qtdTabuleiros:
        tabuleiros3.append(Tabuleiro.montarTabuleiroCompleto(qtdLinhasTabela, qtdColunasTabela, qtdBombas))
        i = i + 1

    resutadoForcaBruta = forcaBrutaLogTab(qtdLinhasTabela, qtdColunasTabela, qtdBombas, tabuleiros1)
    resultadoRegrasBasicasForcaBruta = rotinaRegrasBasicasLogTab(qtdLinhasTabela, qtdColunasTabela, qtdBombas, tabuleiros2)
    resultadoRegrasBasicasProbabilidade = rotinaRegrasBasicasProbabilidadeLogTab(qtdLinhasTabela, qtdColunasTabela,
                                                                                 qtdBombas, tabuleiros3)

    infosGerais = 'Tabuleiro: ' + str(qtdLinhasTabela) + ' x ' + str(qtdColunasTabela) + '\nNumero de Bombas ' + str(qtdBombas)
    arquivo = open('LogResultados.txt', 'w', encoding="cp1252")
    arquivo.write(infosGerais)
    arquivo.write('\n\n')
    arquivo.write('Resultado Forca Bruta \n')
    arquivo.write(resutadoForcaBruta)
    arquivo.write('\n')
    arquivo.write('Resultado Regras Basicas + Forca Bruta \n')
    arquivo.write(resultadoRegrasBasicasForcaBruta)
    arquivo.write('\n')
    arquivo.write('Resultado Regras Basicas + Probabilidade nos clicks \n')
    arquivo.write(resultadoRegrasBasicasProbabilidade)
    arquivo.close()
Exemplo n.º 6
0
def forcaBrutaLog(n_linhas, n_colunas, n_bombas):
    vitorias = 0
    derrotas = 0
    jogos = 1
    mediaAcertos = 0.00
    end_time = time.time() + tempoExecucao
    while time.time() < end_time:
        print('Jogo', jogos)
        print('Placar')
        print('Vitorias', vitorias, "x", derrotas, 'Derrotas')
        tabuleiro = Tabuleiro.montarTabuleiroCompleto(qtdLinhasTabela, qtdColunasTabela, qtdBombas)
        Tabuleiro.imprimirTabuleiro(qtdLinhasTabela, tabuleiro)

        for reps in range((n_linhas * n_colunas) - n_bombas):
            lista = ManipulacaoTabuleiro.listarQuadradosInativos(n_linhas, n_colunas, tabuleiro)
            print(lista)
            numQuadradoSorteado = random.choice(lista)
            quadradoSorteado = ManipulacaoTabuleiro.encontrarQuadradoPeloNumero(numQuadradoSorteado, n_linhas, n_colunas, tabuleiro)
            print("Clique -", reps, "|Posição -", numQuadradoSorteado, "|Quadrado-", quadradoSorteado)
            status = ManipulacaoTabuleiro.click(quadradoSorteado[0], quadradoSorteado[1], tabuleiro, n_linhas, n_colunas)
            if status == 'interromper':
                print('Game Over')
                Tabuleiro.imprimirTabuleiro(qtdLinhasTabela, tabuleiro)
                derrotas = derrotas + 1
                mediaAcertos = mediaAcertos + (reps / ((n_linhas * n_colunas) - n_bombas))
                break
            if (reps + 1) == ((n_linhas * n_colunas) - n_bombas):
                vitorias = 1
                mediaAcertos = mediaAcertos + 1
        jogos = jogos + 1

    print('Vitorias', vitorias, "x", derrotas, 'Derrotas')
    Tabuleiro.imprimirTabuleiro(qtdLinhasTabela, tabuleiro)
    tempo = 'Tempo de Execucao: ' + str(tempoExecucao) + ' segundos\n'
    rodadas = 'Rodadas: ' + str((vitorias + derrotas)) + '\n'
    tempoMedioRodada = 'Tempo Medio por Rodada: ' + str(
        round(tempoExecucao / (vitorias + derrotas), 4)) + ' milisegundos\n'
    qtdVitorias = 'Quantidade de Vitorias: ' + str(vitorias) + '\n'
    qtdDerrotas = 'Quantidade de Derrotas: ' + str(derrotas) + '\n'
    acertosMedios = 'Media de Acertos por Rodadas:' + str(
        round((mediaAcertos / (vitorias + derrotas)) * 100, 2)) + '%\n'
    return tempo + rodadas + tempoMedioRodada + qtdVitorias + qtdDerrotas + acertosMedios
Exemplo n.º 7
0
            else:
                maxValue = -inf
                cell_text = ''
                for action in actions.keys():
                    next = tabuleiro.next(current, action)
                    if next in tabuleiro.sucessors(
                            current) and value[next[0], next[1]] > maxValue:
                        maxValue = value[next[0], next[1]]
                        cell_text = action
            cell_text = cell_text.center(9)
            print(cell_text, end='')
            if j < sz[1] - 1:
                print(',', end='')
        print(']\n')


def print_values(value):
    for i in range(len(value)):
        for j in range(len(value[i])):
            print('{:8.2f}'.format(value[i][j]), end=' ')
        print('\n')
    print('--------------------------------------------------------------')


if __name__ == '__main__':
    world = Tabuleiro(board)
    value = value_iteration(world)
    print('')
    print_values(value)
    print('')
    best_policy(world, value)
Exemplo n.º 8
0
def ValidarPeca(cont):
    global PecaSelect
    global Peca1Blue
    global Peca2Blue
    global Peca3Blue
    global Peca1Red
    global Peca2Red
    global Peca3Red
    PecaSelect = input(
        '  Selecione qual o tamanho da peça da jogada (1 - 2 - 3): ')
    try:
        PecaSelect = int(PecaSelect)
    except ValueError:
        os.system('cls')
        print()
        print(Fore.YELLOW + "  Peça invalida, favor refazer a jogada!" +
              Fore.RESET)
        Tabuleiro.tabuleiro()
        return FALSE
    if (PecaSelect > 0 and PecaSelect < 4):
        if (cont % 2 == 0):
            teste = QuantPecasBlue()
            if (teste == TRUE):
                return TRUE
            else:
                os.system('cls')
                print()
                print(Fore.YELLOW +
                      "  Peça Selecionada já acabou, favor refazer a jogada!" +
                      Fore.RESET)
                Tabuleiro.tabuleiro()

                if (PecaSelect == 1):
                    if (Peca1Blue > 0): Peca1Blue = Peca1Blue + 1
                elif (PecaSelect == 2):
                    if (Peca2Blue > 0): Peca2Blue = Peca2Blue + 1
                else:
                    if (Peca3Blue > 0): Peca3Blue = Peca3Blue + 1

                return FALSE
        else:
            teste = QuantPecasRed()
            if (teste == TRUE):
                return TRUE
            else:
                os.system('cls')
                print()
                print(Fore.YELLOW +
                      "  Peça Selecionada já acabou, favor refazer a jogada!" +
                      Fore.RESET)
                Tabuleiro.tabuleiro()

                if (PecaSelect == 1):
                    if (Peca1Red > 0): Peca1Red = Peca1Red + 1
                elif (PecaSelect == 2):
                    if (Peca2Red > 0): Peca2Red = Peca2Red + 1
                else:
                    if (Peca3Red > 0): Peca3Red = Peca3Red + 1

                return FALSE
    else:
        os.system('cls')
        print()
        print(Fore.YELLOW + "  Peça invalida, favor refazer a jogada!" +
              Fore.RESET)
        Tabuleiro.tabuleiro()
        return FALSE
Exemplo n.º 9
0
def MovimentarPeca(l, c, cont):
    i = int(cont)
    global trava
    global PecaSelect
    global Peca1Blue
    global Peca2Blue
    global Peca3Blue
    global Peca1Red
    global Peca2Red
    global Peca3Red
    if (i % 2 == 0):
        if ((Tabuleiro.tab[l][c] == Pecas.PecaRed0)
                or (Tabuleiro.tab[l][c] == Pecas.PecaRed1)
                or (Tabuleiro.tab[l][c] == Pecas.PecaRed2)):
            PecaSelect = input(
                '  Selecione qual o tamanho da peça da jogada (1 - 2 - 3): ')
            try:
                PecaSelect = int(PecaSelect)
            except ValueError:
                os.system('cls')
                print()
                print(Fore.YELLOW +
                      "  Peça invalida, favor refazer a jogada!" + Fore.RESET)
                Tabuleiro.tabuleiro()
                return FALSE

            if (PecaSelect > 0 and PecaSelect < 4):
                #teste de se ainda a peca selecionada esta disponivel para jogar
                teste = QuantPecasBlue()
                if (teste == TRUE):
                    if (Tabuleiro.tab[l][c] == Pecas.PecaRed0):
                        PecaAntiga = int(1)
                    elif (Tabuleiro.tab[l][c] == Pecas.PecaRed1):
                        PecaAntiga = int(2)
                    else:
                        PecaAntiga = int(3)
                    if (PecaSelect > PecaAntiga):
                        aux = Tabuleiro.tab[l][c]
                        if (PecaSelect == 1):
                            Tabuleiro.tab[l][c] = Pecas.PecaBlue0
                        elif (PecaSelect == 2):
                            Tabuleiro.tab[l][c] = Pecas.PecaBlue1
                        else:
                            Tabuleiro.tab[l][c] = Pecas.PecaBlue2
                        #passar a peca comida para o outro tabuleiro
                        if (Tabuleiro.tab1[l][c] == "     "):
                            Tabuleiro.tab1[l][c] = aux
                        else:
                            Tabuleiro.tab2[l][c] = Tabuleiro.tab1[l][c]
                            Tabuleiro.tab1[l][c] = aux
                        return TRUE
                    else:

                        os.system('cls')
                        print()
                        print(
                            Fore.YELLOW +
                            "JOGADA INVÁLIDA, VOCÊ NÃO PODE COMER ESTA PEÇA!" +
                            Fore.RESET)
                        Tabuleiro.tabuleiro()

                        if (PecaSelect == 1):
                            Peca1Blue = Peca1Blue + 1
                        elif (PecaSelect == 2):
                            Peca2Blue = Peca2Blue + 1
                        else:
                            Peca3Blue = Peca3Blue + 1

                        return FALSE
                else:
                    os.system('cls')
                    print()
                    print(
                        Fore.YELLOW +
                        "  Peça Selecionada já acabou, favor refazer a jogada!"
                        + Fore.RESET)
                    Tabuleiro.tabuleiro()

                    if (PecaSelect == 1):
                        if (Peca1Blue > 0): Peca1Blue = Peca1Blue + 1
                    elif (PecaSelect == 2):
                        if (Peca2Blue > 0): Peca2Blue = Peca2Blue + 1
                    else:
                        if (Peca3Blue > 0): Peca3Blue = Peca3Blue + 1

                    return FALSE
            else:
                os.system('cls')
                print()
                print(Fore.YELLOW +
                      "  Peça invalida, favor refazer a jogada!" + Fore.RESET)
                Tabuleiro.tabuleiro()
                return FALSE
    else:
        if ((Tabuleiro.tab[l][c] == Pecas.PecaBlue0)
                or (Tabuleiro.tab[l][c] == Pecas.PecaBlue1)
                or (Tabuleiro.tab[l][c] == Pecas.PecaBlue2)):
            PecaSelect = input(
                '  Selecione qual o tamanho da peça da jogada (1 - 2 - 3): ')
            try:
                PecaSelect = int(PecaSelect)
            except ValueError:
                os.system('cls')
                print()
                print(Fore.YELLOW +
                      "  Peça invalida, favor refazer a jogada!" + Fore.RESET)
                Tabuleiro.tabuleiro()
                return FALSE
            if (PecaSelect > 0 and PecaSelect < 4):
                #teste de se ainda a peca selecionada esta disponivel para jogar
                teste = QuantPecasRed()
                if (teste == TRUE):
                    if (Tabuleiro.tab[l][c] == Pecas.PecaBlue0):
                        PecaAntiga = int(1)
                    elif (Tabuleiro.tab[l][c] == Pecas.PecaBlue1):
                        PecaAntiga = int(2)
                    else:
                        PecaAntiga = int(3)
                    if (PecaSelect > PecaAntiga):
                        aux = Tabuleiro.tab[l][c]
                        if (PecaSelect == 1):
                            Tabuleiro.tab[l][c] = Pecas.PecaRed0
                        elif (PecaSelect == 2):
                            Tabuleiro.tab[l][c] = Pecas.PecaRed1
                        else:
                            Tabuleiro.tab[l][c] = Pecas.PecaRed2
                        #passar a peca comida para o outro tabuleiro
                        if (Tabuleiro.tab1[l][c] == "     "):
                            Tabuleiro.tab1[l][c] = aux
                        else:
                            Tabuleiro.tab2[l][c] = Tabuleiro.tab1[l][c]
                            Tabuleiro.tab1[l][c] = aux
                        return TRUE
                    else:
                        os.system('cls')
                        print()
                        print(
                            Fore.YELLOW +
                            "  JOGADA INVÁLIDA, VOCÊ NÃO PODE COMER ESTA PEÇA!"
                            + Fore.RESET)
                        Tabuleiro.tabuleiro()

                        if (PecaSelect == 1):
                            Peca1Red = Peca1Red + 1
                        elif (PecaSelect == 2):
                            Peca2Red = Peca2Red + 1
                        else:
                            Peca3Red = Peca3Red + 1

                        return FALSE
                else:
                    os.system('cls')
                    print()
                    print(
                        Fore.YELLOW +
                        "  Peça Selecionada já acabou, favor refazer a jogada!"
                        + Fore.RESET)
                    Tabuleiro.tabuleiro()

                    if (PecaSelect == 1):
                        if (Peca1Red > 0): Peca1Red = Peca1Red + 1
                    elif (PecaSelect == 2):
                        if (Peca2Red > 0): Peca2Red = Peca2Red + 1
                    else:
                        if (Peca3Red > 0): Peca3Red = Peca3Red + 1

                    return FALSE
    l1 = input('  Informe a linha da nova posição da peça:')
    c1 = input('  Informe a coluna da nova posição da peça: ')
    try:
        l1 = int(l1)
        c1 = int(c1)
    except ValueError:
        os.system('cls')
        print()
        print(
            Fore.YELLOW +
            "  Posição invalida, informe um número inteiro para as posições!" +
            Fore.RESET)
        Tabuleiro.tabuleiro()
        return FALSE
    if ((l1 >= 0 and l1 <= 2) and (c1 >= 0 and c1 <= 2)):

        if (Tabuleiro.tab[l1][c1] == "     "):
            Tabuleiro.tab[l1][c1] = Tabuleiro.tab[l][c]
            if (Tabuleiro.tab1[l][c] != "     "):
                Tabuleiro.tab[l][c] = Tabuleiro.tab1[l][c]
                if (Tabuleiro.tab2[l][c] != "     "):
                    Tabuleiro.tab1[l][c] = Tabuleiro.tab2[l][c]
                    Tabuleiro.tab2[l][c] = "     "
                else:
                    Tabuleiro.tab1[l][c] = "     "
            else:
                Tabuleiro.tab[l][c] = "     "

            trava = TRUE
            return TRUE
        else:
            if ((Tabuleiro.tab[l][c] == Pecas.PecaBlue0)
                    or (Tabuleiro.tab[l][c] == Pecas.PecaRed0)):
                PecaAntiga = 1
            elif ((Tabuleiro.tab[l][c] == Pecas.PecaBlue1)
                  or (Tabuleiro.tab[l][c] == Pecas.PecaRed1)):
                PecaAntiga = 2
            else:
                PecaAntiga = 3

            if ((Tabuleiro.tab[l1][c1] == Pecas.PecaBlue0)
                    or (Tabuleiro.tab[l1][c1] == Pecas.PecaRed0)):
                PecaNova = 1
            elif ((Tabuleiro.tab[l1][c1] == Pecas.PecaBlue1)
                  or (Tabuleiro.tab[l1][c1] == Pecas.PecaRed1)):
                PecaNova = 2
            else:
                PecaNova = 3

            if (PecaNova < PecaAntiga):
                aux = Tabuleiro.tab[l1][c1]
                Tabuleiro.tab[l1][c1] = Tabuleiro.tab[l][c]
                #passar a peca comida para o outro tabuleiro
                if (Tabuleiro.tab1[l1][c1] == "     "):
                    Tabuleiro.tab1[l1][c1] = aux
                else:
                    Tabuleiro.tab2[l1][c1] = Tabuleiro.tab1[l1][c1]
                    Tabuleiro.tab1[l1][c1] = aux
                #passar a peca do outro tabuleiro para o principal
                if (Tabuleiro.tab1[l][c] != "     "):
                    Tabuleiro.tab[l][c] = Tabuleiro.tab1[l][c]
                    if (Tabuleiro.tab2[l][c] != "     "):
                        Tabuleiro.tab1[l][c] = Tabuleiro.tab2[l][c]
                        Tabuleiro.tab2 = "     "
                    else:
                        Tabuleiro.tab1[l][c] = "     "
                else:
                    Tabuleiro.tab[l][c] = "     "

                trava = TRUE
                return TRUE
            else:
                os.system('cls')
                print()
                print(Fore.YELLOW +
                      "  JOGADA INVÁLIDA, VOCÊ NÃO PODE COMER ESTA PEÇA!" +
                      Fore.RESET)
                Tabuleiro.tabuleiro()
                return FALSE
    else:
        os.system('cls')
        print()
        print(Fore.YELLOW +
              "  JOGADA INVÁLIDA, FAVOR REALIZAR UM MOVIMENTO VALIDO!" +
              Fore.RESET)
        Tabuleiro.tabuleiro()
        return FALSE
Exemplo n.º 10
0
def rotinaRegrasBasicas(n_linhas, n_colunas, n_bombas):
    vitorias = 0
    derrotas = 0
    jogos = 1

    while vitorias == 0:
        print('Jogo', jogos)
        print('Placar')
        print('Vitorias', vitorias, "x", derrotas, 'Derrotas')
        tabuleiro = Tabuleiro.montarTabuleiroCompleto(qtdLinhasTabela, qtdColunasTabela, qtdBombas)
        Tabuleiro.imprimirTabuleiro(qtdLinhasTabela, tabuleiro)

        resultado = "continuar"
        reps = 1
        while resultado == "continuar" and reps !=0:
            resultado = simularClickAleatorio(n_linhas, n_colunas, tabuleiro)
            if resultado == "continuar":

                rule11 = Regra_1_1.verificarPosicoes(n_linhas, n_colunas, tabuleiro)
                if len(rule11) != 0:
                    r = 0
                    while r <= len(rule11) - 1:
                        ManipulacaoTabuleiro.click(rule11[r][0], rule11[r][1], tabuleiro, n_linhas, n_colunas)
                        r = r + 1

                rule12 = Regra_1_2.verificarPosicoes(n_linhas, n_colunas, tabuleiro)
                if len(rule12) != 0:
                    r = 0
                    while r <= len(rule12)-1:
                        ManipulacaoTabuleiro.click(rule12[r][0], rule12[r][1], tabuleiro, n_linhas, n_colunas)
                        r = r + 1

                rule121 = Regra_1_2_1.verificarPosicoes(n_linhas, n_colunas, tabuleiro)
                if len(rule121) != 0:
                    r = 0
                    while r <= len(rule121) - 1:
                        ManipulacaoTabuleiro.click(rule121[r][0], rule121[r][1], tabuleiro, n_linhas, n_colunas)
                        r = r + 1

                rule131 = Regra_1_3_1.verificarPosicoes(n_linhas, n_colunas, tabuleiro)
                if len(rule131) != 0:
                    r = 0
                    while r <= len(rule131) - 1:
                        ManipulacaoTabuleiro.click(rule131[r][0], rule131[r][1], tabuleiro, n_linhas, n_colunas)
                        r = r + 1

                rule1221 = Regra_1_2_2_1.verificarPosicoes(n_linhas, n_colunas, tabuleiro)
                if len(rule1221) != 0:
                    r = 0
                    while r <= len(rule1221) - 1:
                        ManipulacaoTabuleiro.click(rule1221[r][0], rule1221[r][1], tabuleiro, n_linhas, n_colunas)
                        r = r + 1

                reps = len(ManipulacaoTabuleiro.listarQuadradosInativos(n_linhas, n_colunas, tabuleiro))
                if reps == 0:
                    vitorias = vitorias + 1

            else:
                derrotas = derrotas + 1

    print('Jogo', jogos)
    print('Placar')
    print('Vitorias', vitorias, "x", derrotas, 'Derrotas')
    Tabuleiro.imprimirTabuleiro(qtdLinhasTabela, tabuleiro)
Exemplo n.º 11
0
def rotinaRegrasBasicasProbabilidadeLogTab(n_linhas, n_colunas, n_bombas, tabuleiros3):
    tempoIni = time.time()
    vitorias = 0
    derrotas = 0
    jogos = 1
    mediaAcertos = 0.00
    # print(tabuleiros3)
    i = 0
    while i < len(tabuleiros3):
        print('-------------------- INICIO DO JOGO --------------------')
        print('Jogo', jogos)
        print('Placar')
        print('Vitorias', vitorias, "x", derrotas, 'Derrotas')
        #print(i)
        tabuleiro = tabuleiros3[i]
        Tabuleiro.imprimirTabuleiro(qtdLinhasTabela, tabuleiro)

        resultado = "continuar"
        reps = 0
        while resultado == "continuar" and reps != qtdBombas:
            if reps == 1:
                resultado = simularClickAleatorio(n_linhas, n_colunas, tabuleiro)
                Tabuleiro.imprimirTabuleiro(qtdLinhasTabela, tabuleiro)
            else:
                probabilidades = RegraProbabilidade.listarQuadradosProbabilidade(n_linhas, n_colunas, n_bombas, tabuleiro)
                resultado = RegraProbabilidade.simularClickProbabilistico(n_linhas, n_colunas, tabuleiro, probabilidades)
                Tabuleiro.imprimirTabuleiro(qtdLinhasTabela, tabuleiro)

            if resultado == "continuar":

                parada = True
                while parada:
                    rule11 = Regra_1_1.verificarPosicoes(n_linhas, n_colunas, tabuleiro)
                    if len(rule11) != 0:
                        r = 0
                        while r <= len(rule11) - 1:
                            ManipulacaoTabuleiro.click(rule11[r][0], rule11[r][1], tabuleiro, n_linhas, n_colunas)
                            Tabuleiro.imprimirTabuleiro(qtdLinhasTabela, tabuleiro)
                            r = r + 1

                    rule12 = Regra_1_2.verificarPosicoes(n_linhas, n_colunas, tabuleiro)
                    if len(rule12) != 0:
                        r = 0
                        while r <= len(rule12)-1:
                            ManipulacaoTabuleiro.click(rule12[r][0], rule12[r][1], tabuleiro, n_linhas, n_colunas)
                            Tabuleiro.imprimirTabuleiro(qtdLinhasTabela, tabuleiro)
                            r = r + 1

                    rule121 = Regra_1_2_1.verificarPosicoes(n_linhas, n_colunas, tabuleiro)
                    if len(rule121) != 0:
                        r = 0
                        while r <= len(rule121) - 1:
                            ManipulacaoTabuleiro.click(rule121[r][0], rule121[r][1], tabuleiro, n_linhas, n_colunas)
                            Tabuleiro.imprimirTabuleiro(qtdLinhasTabela, tabuleiro)
                            r = r + 1

                    rule131 = Regra_1_3_1.verificarPosicoes(n_linhas, n_colunas, tabuleiro)
                    if len(rule131) != 0:
                        r = 0
                        while r <= len(rule131) - 1:
                            ManipulacaoTabuleiro.click(rule131[r][0], rule131[r][1], tabuleiro, n_linhas, n_colunas)
                            Tabuleiro.imprimirTabuleiro(qtdLinhasTabela, tabuleiro)
                            r = r + 1

                    rule1221 = Regra_1_2_2_1.verificarPosicoes(n_linhas, n_colunas, tabuleiro)
                    if len(rule1221) != 0:
                        r = 0
                        while r <= len(rule1221) - 1:
                            ManipulacaoTabuleiro.click(rule1221[r][0], rule1221[r][1], tabuleiro, n_linhas, n_colunas)
                            Tabuleiro.imprimirTabuleiro(qtdLinhasTabela, tabuleiro)
                            r = r + 1

                    rule14Combo = Regra_1_4_Combo.verificarPosicoes(n_linhas, n_colunas, tabuleiro)
                    if len(rule14Combo) != 0:
                        r = 0
                        while r <= len(rule14Combo) - 1:
                            ManipulacaoTabuleiro.click(rule14Combo[r][0], rule14Combo[r][1], tabuleiro, n_linhas, n_colunas)
                            Tabuleiro.imprimirTabuleiro(qtdLinhasTabela, tabuleiro)
                            r = r + 1

                    rule25Combo = Regra_2_5_Combo.verificarPosicoes(n_linhas, n_colunas, tabuleiro)
                    if len(rule25Combo) != 0:
                        r = 0
                        while r <= len(rule25Combo) - 1:
                            ManipulacaoTabuleiro.click(rule25Combo[r][0], rule25Combo[r][1], tabuleiro, n_linhas, n_colunas)
                            Tabuleiro.imprimirTabuleiro(qtdLinhasTabela, tabuleiro)
                            r = r + 1

                    rule36Combo = Regra_3_6_Combo.verificarPosicoes(n_linhas, n_colunas, tabuleiro)
                    if len(rule36Combo) != 0:
                        r = 0
                        while r <= len(rule36Combo) - 1:
                            ManipulacaoTabuleiro.click(rule36Combo[r][0], rule36Combo[r][1], tabuleiro, n_linhas, n_colunas)
                            Tabuleiro.imprimirTabuleiro(qtdLinhasTabela, tabuleiro)
                            r = r + 1

                    rule121Combo = Regra_1_2_1_Combo.verificarPosicoes(n_linhas, n_colunas, tabuleiro)
                    if len(rule121Combo) != 0:
                        r = 0
                        while r <= len(rule121Combo) - 1:
                            ManipulacaoTabuleiro.click(rule121Combo[r][0], rule121Combo[r][1], tabuleiro, n_linhas, n_colunas)
                            Tabuleiro.imprimirTabuleiro(qtdLinhasTabela, tabuleiro)
                            r = r + 1

                    rule132Combo = Regra_1_3_2_Combo.verificarPosicoes(n_linhas, n_colunas, tabuleiro)
                    if len(rule132Combo) != 0:
                        r = 0
                        while r <= len(rule132Combo) - 1:
                            ManipulacaoTabuleiro.click(rule132Combo[r][0], rule132Combo[r][1], tabuleiro, n_linhas, n_colunas)
                            Tabuleiro.imprimirTabuleiro(qtdLinhasTabela, tabuleiro)
                            r = r + 1


                    if len(rule11) == 0 and len(rule12) == 0 and len(rule131) == 0 and len(rule121) == 0 and len(
                            rule1221) == 0 and len(rule14Combo) == 0 and len(rule25Combo) == 0 and len(rule36Combo) == 0 and len(rule121Combo) == 0 and len(rule132Combo) == 0:
                        parada = False

                reps = len(ManipulacaoTabuleiro.listarQuadradosInativos(n_linhas, n_colunas, tabuleiro))
                bombasMacardas = ManipulacaoTabuleiro.contarBombasMarcadas(n_linhas, n_colunas, tabuleiro)
                if reps == qtdBombas or bombasMacardas == qtdBombas:
                    vitorias = vitorias + 1
                    mediaAcertos = mediaAcertos + 1
                    break
            else:
                derrotas = derrotas + 1
                mediaAcertos = mediaAcertos + (((n_linhas * n_colunas) -reps) / ((n_linhas * n_colunas)))

            Tabuleiro.imprimirTabuleiro(qtdLinhasTabela, tabuleiro)
        jogos = jogos + 1
        i = i + 1

        print('-------------------- FIM DO JOGO --------------------')

    tempoFim = time.time()
    print('-------------------- RESUMO DOS JOGOS --------------------')
    print('Jogos:', jogos-1)
    print('Placar')
    print('Vitorias', vitorias, "x", derrotas, 'Derrotas')

    tempo = 'Tempo de Execucao: ' + str(round(tempoFim-tempoIni, 4)) + ' segundos\n'
    rodadas = 'Rodadas: ' + str((vitorias+derrotas)) + '\n'
    tempoMedioRodada = 'Tempo Medio por Rodada: ' + str(round((tempoFim-tempoIni)/(vitorias+derrotas), 4)) + ' milisegundos\n'
    qtdVitorias = 'Quantidade de Vitorias: ' + str(vitorias) + '\n'
    qtdDerrotas = 'Quantidade de Derrotas: ' + str(derrotas) + '\n'
    acertosMedios = 'Media de Acertos por Rodadas:' + str(round((mediaAcertos/(vitorias+derrotas)) * 100, 2)) + '%\n'
    return tempo+rodadas+tempoMedioRodada+qtdVitorias+qtdDerrotas+acertosMedios
Exemplo n.º 12
0
def rotinaRegrasBasicasProbabilidadeLog(n_linhas, n_colunas, n_bombas):
    vitorias = 0
    derrotas = 0
    jogos = 1
    mediaAcertos = 0.00
    end_time = time.time() + tempoExecucao
    while time.time() < end_time:
        print('Jogo', jogos)
        print('Placar')
        print('Vitorias', vitorias, "x", derrotas, 'Derrotas')
        tabuleiro = Tabuleiro.montarTabuleiroCompleto(qtdLinhasTabela, qtdColunasTabela, qtdBombas)
        Tabuleiro.imprimirTabuleiro(qtdLinhasTabela, tabuleiro)

        resultado = simularClickAleatorio(5, 5, tabuleiro)
        reps = 1
        while resultado == "continuar" and reps !=0:
            probabilidades = RegraProbabilidade.listarQuadradosProbabilidade(n_linhas, n_colunas, n_bombas, tabuleiro)
            resultado = RegraProbabilidade.simularClickProbabilistico(n_linhas, n_colunas, tabuleiro, probabilidades)
            if resultado == "continuar":

                parada = True
                while parada:
                    rule11 = Regra_1_1.verificarPosicoes(n_linhas, n_colunas, tabuleiro)
                    if len(rule11) != 0:
                        r = 0
                        while r <= len(rule11) - 1:
                            ManipulacaoTabuleiro.click(rule11[r][0], rule11[r][1], tabuleiro, n_linhas, n_colunas)
                            r = r + 1

                    rule12 = Regra_1_2.verificarPosicoes(n_linhas, n_colunas, tabuleiro)
                    if len(rule12) != 0:
                        r = 0
                        while r <= len(rule12)-1:
                            ManipulacaoTabuleiro.click(rule12[r][0], rule12[r][1], tabuleiro, n_linhas, n_colunas)
                            r = r + 1

                    rule121 = Regra_1_2_1.verificarPosicoes(n_linhas, n_colunas, tabuleiro)
                    if len(rule121) != 0:
                        r = 0
                        while r <= len(rule121) - 1:
                            ManipulacaoTabuleiro.click(rule121[r][0], rule121[r][1], tabuleiro, n_linhas, n_colunas)
                            r = r + 1

                    rule131 = Regra_1_3_1.verificarPosicoes(n_linhas, n_colunas, tabuleiro)
                    if len(rule131) != 0:
                        r = 0
                        while r <= len(rule131) - 1:
                            ManipulacaoTabuleiro.click(rule131[r][0], rule131[r][1], tabuleiro, n_linhas, n_colunas)
                            r = r + 1

                    rule1221 = Regra_1_2_2_1.verificarPosicoes(n_linhas, n_colunas, tabuleiro)
                    if len(rule1221) != 0:
                        r = 0
                        while r <= len(rule1221) - 1:
                            ManipulacaoTabuleiro.click(rule1221[r][0], rule1221[r][1], tabuleiro, n_linhas, n_colunas)
                            r = r + 1

                    if len(rule11) == 0 and len(rule12) == 0 and len(rule131) == 0 and len(rule121) == 0 and len(
                            rule1221) == 0:
                        parada = False

                reps = len(ManipulacaoTabuleiro.listarQuadradosInativos(n_linhas, n_colunas, tabuleiro))
                if reps == 0:
                    vitorias = vitorias + 1
                    mediaAcertos = mediaAcertos + 1
            else:
                derrotas = derrotas + 1
                mediaAcertos = mediaAcertos + (((n_linhas * n_colunas) - n_bombas-reps) / ((n_linhas * n_colunas) - n_bombas))

    print('Jogo', jogos)
    print('Placar')
    print('Vitorias', vitorias, "x", derrotas, 'Derrotas')
    Tabuleiro.imprimirTabuleiro(qtdLinhasTabela, tabuleiro)

    tempo = 'Tempo de Execucao: ' + str(tempoExecucao) + ' segundos\n'
    rodadas = 'Rodadas: ' + str((vitorias+derrotas)) + '\n'
    tempoMedioRodada = 'Tempo Medio por Rodada: ' + str(round(tempoExecucao/(vitorias+derrotas), 4)) + ' milisegundos\n'
    qtdVitorias = 'Quantidade de Vitorias: ' + str(vitorias) + '\n'
    qtdDerrotas = 'Quantidade de Derrotas: ' + str(derrotas) + '\n'
    acertosMedios = 'Media de Acertos por Rodadas:' + str(round((mediaAcertos/(vitorias+derrotas)) * 100, 2)) + '%\n'
    return tempo+rodadas+tempoMedioRodada+qtdVitorias+qtdDerrotas+acertosMedios
Exemplo n.º 13
0
class Misere:
    def __init__(self, gameTree=None):
        self.tabuleiro = Tabuleiro('Misere')
        self.nomeJogo = 'Misere'
        self.arvore = gameTree
        self.ultimaJogada = (
            0, 0
        )  # Ultima jogada serve para checar se o jogo encerrou no método fimDeJogo

    def __str__(self):
        string = ''
        tabuleiro = self.tabuleiro.criarTabuleiro()
        for linha in tabuleiro:
            i = 0
            for elemento in linha:
                if elemento == '':
                    elemento = ' '
                if i < 2:
                    string += elemento + '|'
                else:
                    string += elemento
                i += 1
            string += '\n'
        return string

    def tutorial(self):
        '''Mostra o tutorial do jogo Misere'''
        print('\n\n' + ' ' * 20 + ' Tutorial Miserè ')
        print(
            "\nOlá, para realizar suas jogadas siga a regra abaixo: \n\nVocê deve inserir um número referente a uma das posições disponíveis que serão apresentadas. \nAs posições vão de 1 a 9, que representam em ordem as posições do tabuleiro"
        )
        print('\nExemplos: \n\nEntrada: 1')
        self.tabuleiro.tabuleiro = '100000000'
        print(self)
        print('Entrada: 5')
        self.tabuleiro.tabuleiro = '000010000'
        print(self)
        print('Entrada: 8')
        self.tabuleiro.tabuleiro = '000000010'
        print(self)
        self.tabuleiro.tabuleiro = '000000000'

    def posicoesDisponiveis(self):
        '''Retorna uma lista com as posições disponíveis para jogar no formato de input para o usuário'''
        jogadas = self.jogadasValidas()
        posicoes = []
        for jogada in jogadas:
            if jogada[0] == 0:
                posicoes.append(str(jogada[1] + 1))
            elif jogada[0] == 1:
                posicoes.append(str(jogada[1] + 4))
            elif jogada[0] == 2:
                posicoes.append(str(jogada[1] + 7))
        return posicoes

    def jogadasValidas(self, blackList=[]):
        '''Retorna todas as jogadas válidas possíveis no formato (linha,coluna) excluindo as que estão no parâmetro blackList'''
        tabuleiro = self.tabuleiro.criarTabuleiro()
        jogadas = []
        indiceL = 0
        for linha in tabuleiro:
            indiceC = 0
            for coluna in linha:
                if coluna == '':
                    if (indiceL, indiceC) not in blackList:
                        jogadas.append((indiceL, indiceC))
                indiceC += 1
            indiceL += 1
        return jogadas

    def jogar(self, jogada, simbolo='X'):
        """Faz a jogada e adiciona no grafo a aresta correspondente a esta jogada, somente se ainda não existir ligação entre elas"""
        linha = jogada[0]
        coluna = jogada[1]
        anterior = self.tabuleiro.tabuleiro
        i = linha * 3 + coluna
        self.ultimaJogada = (int(linha), int(coluna))
        self.tabuleiro.tabuleiro = self.tabuleiro.alterarTabuleiro(i, simbolo)
        if not self.arvore.existeLigacao(anterior, self.tabuleiro.tabuleiro):
            self.arvore.add(anterior, self.tabuleiro.tabuleiro, 0)

    def jogarAleatorio(self, blackList=[]):
        """Joga aleatoriamente, porém exclui as jogadas contidas na blacklist"""
        jogadas = self.jogadasValidas(blackList)
        pos = random.randint(0, len(jogadas) - 1)
        self.jogar(jogadas[pos])

    def fimDeJogo(self):
        '''Checa se a a partida encerrou com a ultima jogada. Este é um método mais eficiente do que o tabuleiroFinalizado()'''
        tabuleiro = self.tabuleiro.criarTabuleiro()
        linha = self.ultimaJogada[0]
        coluna = self.ultimaJogada[1]
        if tabuleiro[linha][0] == 'X' and tabuleiro[linha][
                1] == 'X' and tabuleiro[linha][2] == 'X':
            return True
        if tabuleiro[0][coluna] == 'X' and tabuleiro[1][
                coluna] == 'X' and tabuleiro[2][coluna] == 'X':
            return True
        if (tabuleiro[0][0] == 'X' and tabuleiro[1][1] == 'X'
                and tabuleiro[2][2] == 'X') or (tabuleiro[2][0] == 'X'
                                                and tabuleiro[1][1] == 'X'
                                                and tabuleiro[0][2] == 'X'):
            return True
        return False

    def tabuleiroFinalizado(self):
        """Checa se a partida encerrou em qualquer posicao do tabuleiro"""
        tabuleiro = self.tabuleiro.criarTabuleiro()
        for l in range(3):
            if tabuleiro[l][0] == 'X' and tabuleiro[l][1] == 'X' and tabuleiro[
                    l][2] == 'X':
                return True
        for c in range(3):
            if tabuleiro[0][c] == 'X' and tabuleiro[1][c] == 'X' and tabuleiro[
                    2][c] == 'X':
                return True
        if (tabuleiro[0][0] == 'X' and tabuleiro[1][1] == 'X'
                and tabuleiro[2][2] == 'X') or (tabuleiro[2][0] == 'X'
                                                and tabuleiro[1][1] == 'X'
                                                and tabuleiro[0][2] == 'X'):
            return True
        return False

    def buscarPosicao(self, proximo, anterior):
        '''Recebe dois estados do tabuleiro, retorna a linha e a coluna que difere estes tabuleiros, ou seja, a jogada seguinte'''
        i = 0
        while i < 9:
            if proximo[i] != anterior[i]:
                iLinha = i
                linha = 0
                while iLinha > 2:
                    linha += 1
                    iLinha -= 3
                coluna = iLinha
                return (linha, coluna)
            i += 1
        return None
Exemplo n.º 14
0
	def __init__(self):
		self.tabule = tabule.Tabuleiro() # Tabuleiro
		self.ia = ia.IA(self.tabule) # IA para executar o MiniMax
		self.iniciarJogo()
Exemplo n.º 15
0
#solicita o nome de um jogador
player2 = input("  Informe o nome do Jogador 2: ")
print("-=" *34)
os.system('cls')

#altera as cores dos nomes dos jogadores
player2 = (Fore.RED + f'{player2}' + Fore.RESET)
player1 = (Fore.BLUE + f'{player1}' + Fore.RESET)

VitoriaP1 = int(0)
VitoriaP2 = int(0)

cont = int(0)
jogo = FALSE
Tabuleiro.tabuleiro()

while( jogo == FALSE):

    Jogada.jogada(cont, player1, player2)
    os.system('cls')
    cont = cont + 1
    jogo = FimJogo.ValidarJogo(cont, player1, player2)
    Tabuleiro.tabuleiro()

    if(jogo == TRUE):
        print()
        reset = input("  Deseja jogar novamente (S/N): ")
        if((reset == "S") or (reset == "s")):
            if(cont % 2 == 0): VitoriaP2 = VitoriaP2 + 1
            else: VitoriaP1 = VitoriaP1 + 1
Exemplo n.º 16
0
    def jogar(self):
        # Inicializa pygames
        pygame.init()

        # Largura e altura da tela
        WINDOW_SIZE = [725, 725]
        screen = pygame.display.set_mode(WINDOW_SIZE)

        # Titulo
        pygame.display.set_caption("Don't be a drag, just be a queen")

        # Loop ate o usuario fechar a aplicacao
        done = False

        # gerencia os cliques do mouse
        clock = pygame.time.Clock()
        # -------- Recebe os movimentos do usuario -----------
        while not done:
            for event in pygame.event.get():  # Usuario faz algo
                if event.type == pygame.QUIT:  # Se clicar em fechar
                    done = True  # marca como terminado e acaba o loop
                elif event.type == pygame.MOUSEBUTTONDOWN:
                    # Usuario clica no mouse. Pega posicao
                    pos = pygame.mouse.get_pos()
                    #Converte coordenadas x,y para coordenadas da tela
                    column = pos[0] // (Casa.getLargura())
                    row = pos[1] // (Casa.getAltura())
                    print("Click ", pos, "Grid coordinates: ", row, column)

            # background
            screen.fill(self.BLACK)

            print(self.tabuleiro.getRows())

            # Desenha os quadrinhos
            for row in range(self.tabuleiro.getRows()):
                for column in range(Tabuleiro.getColumns()):
                    #Seta a cor das pecas
                    if (row + column) % 2 == 0:
                        self.tabuleiro.Tabuleiro.getGrid()[row][column].Casa.getPeca().setCor(self.WHITE)
                    else:
                        self.tabuleiro.Tabuleiro.getGrid()[row][column].Casa.getPeca().setCor(self.BLACK)
                    #desenha as pecas
                    pygame.draw.rect(screen,
                                         self.tabuleiro.Tabuleiro.getGrid()[row][column].Casa.getPeca().getCor(),
                                         [Casa.getLargura() * column,
                                          Casa.getAltura() * row,
                                          Casa.getLargura(),
                                          Casa.getAltura()])

                    #Preenche com pecas os quadros
                    if self.tabuleiro.getGrid()[row][column].Casa.getPeca().getCor() == self.WHITE and (row < 3):
                        #cada quadro tem 90px, entao pegamos a coordenada (x,y) e multiplicamos pelo valor do lado do quadrado
                        # para obtermos a posicao que a peca deve ficar
                        screen.blit(self.PecaPreta, (Casa.getLargura() * column+3, Casa.getAltura() * row+3))
                        #Esse +3 eh apenas pra peca nao ficar colada com o canto do quadrado
                        #serve de margem
                        #marca a casa como ocupada
                        self.tabuleiro.getGrid()[row][column].Casa.getPeca().setOcupado()

                    #Preenche com pecas os quadros
                    if self.tabuleiro.getGrid()[row][column].Casa.getPeca().getCor() == self.WHITE and (row > 4):
                        #cada quadro tem 90px, entao pegamos a coordenada (x,y) e multiplicamos pelo valor do lado do quadrado
                        # para obtermos a posicao que a peca deve ficar
                        screen.blit(self.PecaBranca, (Casa.getLargura() * column+3, Casa.getAltura() * row+3))
                        #Esse +3 eh apenas pra peca nao ficar colada com o canto do quadrado
                        #serve de margem
                        #marca a casa como ocupada
                        self.tabuleiro.getGrid()[row][column].Casa.getPeca().setOcupado()

            # Limite de 60 frames por segundo
            clock.tick(60)

            # update na tela com o que desenhamos
            pygame.display.flip()

        #finaliza o py games
        pygame.quit()