예제 #1
0
def desistir(estado_jogo, nome1, nome2=" "):
    if (not mod.game_inprogress(estado_jogo)):
        print("Não existe jogo em curso.")
    elif (nome1 not in mod.jogadores_cadastrados(estado_jogo)) or (
            nome2 != " "
            and nome2 not in mod.jogadores_cadastrados(estado_jogo)):
        print("Jogador não registado.")
    elif (nome1 not in mod.jogo_jogadores(estado_jogo)) or (
            nome2 != " " and nome2 not in mod.jogo_jogadores(estado_jogo)):
        print("Jogador não participa do jogo em curso.")
    else:
        if (nome2 == " "):
            if (nome1 == estado_jogo["estado"]["jogador1"]):
                estado_jogo = terminar_jogo(estado_jogo,
                                            estado_jogo["estado"]["jogador2"],
                                            estado_jogo["estado"]["jogador1"])
            else:
                estado_jogo = terminar_jogo(estado_jogo,
                                            estado_jogo["estado"]["jogador1"],
                                            estado_jogo["estado"]["jogador2"])
        else:
            estado_jogo = terminar_jogo(estado_jogo,
                                        estado_jogo["estado"]["jogador1"],
                                        estado_jogo["estado"]["jogador2"],
                                        True)
        estado_jogo["estado"]["em_curso"] = False
        print("Desistência com sucesso. Jogo terminado.")
    return estado_jogo
예제 #2
0
def mostra_resultado(estado_jogo):
    if (mod.game_inprogress(estado_jogo)):
        tabuleiro = mod.obter_tabuleiro(estado_jogo)
        for linha in range(0, len(tabuleiro)):
            for coluna in range(0, len(tabuleiro[0])):
                print(linha + 1, coluna + 1, tabuleiro[linha][coluna], sep=" ")
    else:
        print("Não existe jogo em curso.")
예제 #3
0
def iniciar_jogo(estado_jogo, nome1, nome2, comprimento, altura,
                 tamanho_sequencia, tamanho_pecas):
    if (mod.game_inprogress(estado_jogo)):
        print("Existe jogo em curso.")
    elif (nome1 not in mod.jogadores_cadastrados(estado_jogo)) or (
            nome2 not in mod.jogadores_cadastrados(estado_jogo)):
        print("Jogador não registado.")
    elif (comprimento <=
          0) or (altura <= 0) or (altura <
                                  (comprimento / 2)) or (altura > comprimento):
        print("Dimensões de grelha inválidas.")
    elif (tamanho_sequencia <= 0) or (tamanho_sequencia > comprimento):
        print("Tamanho de sequência inválido.")
    else:
        c_peca_invalida = 0
        if (tamanho_pecas[0] == ""):
            tamanho_pecas[0] = 0
        for peca in tamanho_pecas:
            if ((int(peca) < 0) or (int(peca) >= tamanho_sequencia)):
                c_peca_invalida += 1
        if (c_peca_invalida > 0):
            print("Dimensões de peças especiais inválidas.")
        else:
            pecas_esp = dict(
                (i, tamanho_pecas.count(i)) for i in tamanho_pecas)
            estado_jogo["estado"]["em_curso"] = True
            estado_jogo["estado"]["comprimento"] = comprimento
            estado_jogo["estado"]["altura"] = altura
            estado_jogo["estado"]["tamanho_sequencia"] = tamanho_sequencia
            estado_jogo["estado"]["jogador1"] = nome1
            estado_jogo["estado"]["jogador2"] = nome2
            estado_jogo["estado"]["tabuleiro"] = [
                ["Vazio" for _ in range(comprimento)] for _ in range(altura)
            ]
            dicionario = {"nome": nome1, "pecas_especiais": pecas_esp}
            estado_jogo["estado"]["tamanho_pecas_especiais"].append(dicionario)
            dicionario = {"nome": nome2, "pecas_especiais": pecas_esp.copy()}
            estado_jogo["estado"]["tamanho_pecas_especiais"].append(dicionario)
            estado_jogo["estado"]["tamanho_pecas_especiais"] = ordena_nome(
                estado_jogo["estado"]["tamanho_pecas_especiais"])
            print(
                "Jogo iniciado entre",
                estado_jogo["estado"]["tamanho_pecas_especiais"][0]["nome"],
                "e",
                estado_jogo["estado"]["tamanho_pecas_especiais"][1]["nome"] +
                ".")
    return estado_jogo
예제 #4
0
def detalhes_jogo(estado_jogo):
    if (not mod.game_inprogress(estado_jogo)):
        print("Não existe jogo em curso.")
    else:
        print(str(estado_jogo["estado"]["comprimento"]),
              str(estado_jogo["estado"]["altura"]))
        for jogador in estado_jogo["estado"]["tamanho_pecas_especiais"]:
            print(jogador["nome"])
            c_pecas = 0
            for item in estado_jogo["estado"]["tamanho_pecas_especiais"]:
                while c_pecas < len(item["pecas_especiais"]):
                    if (item["nome"] == jogador["nome"]):
                        key = list(item["pecas_especiais"].keys())[c_pecas]
                        value = list(item["pecas_especiais"].values())[c_pecas]
                        print(f"{key} {value}")
                    c_pecas += 1
                c_pecas = 0
예제 #5
0
def coloca_peca(estado_jogo, nome, tamanho_peca, posicao, sentido="E"):
    tabuleiro = mod.obter_tabuleiro(estado_jogo)
    if (not mod.game_inprogress(estado_jogo)):
        print("Não existe jogo em curso.")
    elif (nome not in mod.jogo_jogadores(estado_jogo)):
        print("Jogador não participa no jogo em curso.")
    elif (not validar_pecas_especiais(estado_jogo, nome, tamanho_peca)):
        print("Tamanho de peça não disponível.")
    elif (not validar_posicao(estado_jogo, tamanho_peca, posicao, sentido)):
        print("Posição irregular.")
    else:
        if (tamanho_peca == 1):
            tabuleiro = insere_peca(tabuleiro, nome, tamanho_peca, posicao,
                                    posicao)
        elif (sentido == "E"):
            tabuleiro = insere_peca(tabuleiro, nome, tamanho_peca,
                                    (posicao - tamanho_peca) + 1, posicao)
            estado_jogo = retira_pecas_especiais(estado_jogo, nome,
                                                 tamanho_peca)
        else:
            tabuleiro = insere_peca(tabuleiro, nome, tamanho_peca, posicao,
                                    (tamanho_peca + posicao) - 1)
            estado_jogo = retira_pecas_especiais(estado_jogo, nome,
                                                 tamanho_peca)
        if (sequencia_vencedora(tabuleiro, nome,
                                estado_jogo["estado"]["tamanho_sequencia"])):
            if (estado_jogo["estado"]["jogador1"] == nome):
                estado_jogo = terminar_jogo(estado_jogo, nome,
                                            estado_jogo["estado"]["jogador2"])
            else:
                estado_jogo = terminar_jogo(estado_jogo, nome,
                                            estado_jogo["estado"]["jogador1"])
            print("Sequência conseguida. Jogo terminado.")
        else:
            estado_jogo["tabuleiro"] = tabuleiro
            print("Peça colocada.")
    return estado_jogo