Esempio n. 1
0
def dado_vale_6(canvas_ops, canvas_tabuleiro):
    global vez, my_canvas, dado
    vez = game_rules.get_vez()
    cores_peca = ["blue", "yellow", "green", "red"]
    canvas_ops.create_rectangle(150, 80, 240, 160, fill=cores_peca[vez])
    dado = 6
    label_img = Label()
    label_img.config(image='')
    label_img.image = PhotoImage(file="dado_6.png")
    a = label_img.image
    label_img.config(image="")
    label_img.image = a
    canvas_ops.create_image(180, 100, image=label_img.image, anchor=NW)

    seis_count = game_rules.get_seis_count()
    if seis_count < 3:
        game_rules.muda_6_count()
        canvas_tabuleiro.bind("<Button-1>", clica)
    else:
        game_rules.seis_tres_vezes_seguidas()
        vez = game_rules.vez_do_proximo()
        draw_canvas.limpa_tabuleiro(canvas_move_peca, root_move_peca)
        draw_canvas.desenha(canvas_move_peca, root_move_peca)

    if game_rules.tem_pecas_no_tabuleiro(vez) == False:
        vez = game_rules.vez_do_proximo()

    else:
        canvas_tabuleiro.bind("<Button-1>", clica)
Esempio n. 2
0
def dado_vale_5(canvas_ops, canvas_tabuleiro):
    global vez, my_canvas, root_move_peca, dado
    vez = game_rules.get_vez()
    cores_peca = ["blue", "yellow", "green", "red"]
    canvas_ops.create_rectangle(150, 80, 240, 160, fill=cores_peca[vez])
    dado = 5
    label_img = Label()
    label_img.config(image='')
    label_img.image = PhotoImage(file="dado_5.png")
    a = label_img.image
    label_img.config(image="")
    label_img.image = a
    canvas_ops.create_image(180, 100, image=label_img.image, anchor=NW)

    if dado == 5:
        if game_rules.pode_mover_casa_saida(vez) == True:
            game_rules.tirou_5_no_dado(vez)
            vez = game_rules.vez_do_proximo()
            canvas_tabuleiro = draw_canvas.get_canvas()
            root_move_peca = draw_canvas.get_root()
            draw_canvas.desenha(canvas_tabuleiro, root_move_peca)
        # nao pode mover para casa de saída e nao tem peca no tabuleiro
        # elif game_rules_certo_tlvz.tem_pecas_na_casaInicial(vez) == False:
        elif game_rules.tem_pecas_no_tabuleiro(vez) == False:
            vez = game_rules.vez_do_proximo()
        # nao pode mover para casa de saída, mas tem peça no tabuleiro
        else:
            canvas_tabuleiro.bind("<Button-1>", clica)

    elif game_rules.tem_pecas_no_tabuleiro(vez) == False:
        vez = game_rules.vez_do_proximo()

    else:
        canvas_tabuleiro.bind("<Button-1>", clica)
Esempio n. 3
0
def dado_vale_4(canvas_ops, canvas_tabuleiro):
    global vez, my_canvas, dado
    vez = game_rules.get_vez()
    cores_peca = ["blue", "yellow", "green", "red"]
    canvas_ops.create_rectangle(150, 80, 240, 160, fill=cores_peca[vez])
    dado = 4
    label_img = Label()
    label_img.config(image='')
    label_img.image = PhotoImage(file="dado_4.png")
    a = label_img.image
    label_img.config(image="")
    label_img.image = a
    canvas_ops.create_image(180, 100, image=label_img.image, anchor=NW)
    if game_rules.tem_pecas_no_tabuleiro(vez) == False:
        vez = game_rules.vez_do_proximo()
    else:
        canvas_tabuleiro.bind("<Button-1>", clica)
Esempio n. 4
0
def click_joga_dado(canvas_ops,
                    canvas_tabuleiro,
                    houve_captura=False,
                    peca_chegou_na_casa_final=False):
    global vez, my_canvas, dado, seis_count, dado_button, esperando_jogada

    dado_button = draw_canvas.get_dado_button()
    salvar_jogo_button = draw_canvas.get_salvar_jogo_button()
    canvas_move_peca = draw_canvas.get_canvas()
    root_move_peca = draw_canvas.get_root()

    dado = game_rules.joga_dado()

    # BLOQUEIA O BOTÃO DE LANÇAR O DADO ATE MEXER UMA PEÇA
    vez = game_rules.get_vez()
    if game_rules.tem_pecas_no_tabuleiro(vez):
        dado_button["state"] = DISABLED
        salvar_jogo_button["state"] = DISABLED

    vez = game_rules.get_vez()

    # desenha cor de fundo do dado
    cores_peca = ["blue", "yellow", "green", "red"]
    canvas_ops.create_rectangle(150, 80, 240, 160, fill=cores_peca[vez])

    dado = game_rules.joga_dado()

    # se houve captura a pessoa joga de novo com 6 no dado
    if houve_captura == True or peca_chegou_na_casa_final == True:
        dado = 6
        houve_captura == False
        game_rules.muda_houve_captura_para_falso()
        canvas_tabuleiro.bind("<Button-1>", clica)

    if dado != 5:
        esperando_jogada = True

    label_img = Label()
    label_img.config(image='')

    if dado == 1:
        label_img.image = PhotoImage(file="dado_1.png")
    elif dado == 2:
        label_img.image = PhotoImage(file="dado_2.png")
    elif dado == 3:
        label_img.image = PhotoImage(file="dado_3.png")
    elif dado == 4:
        label_img.image = PhotoImage(file="dado_4.png")
    elif dado == 5:
        label_img.image = PhotoImage(file="dado_5.png")
    else:
        label_img.image = PhotoImage(file="dado_6.png")

    a = label_img.image
    label_img.config(image="")
    label_img.image = a
    canvas_ops.create_image(180, 100, image=label_img.image, anchor=NW)

    # se tirou 6 no dado
    seis_count = game_rules.get_seis_count()
    if dado == 6:
        if seis_count < 3:
            seis_count += 1
            canvas_tabuleiro.bind("<Button-1>", clica)
        else:
            game_rules.seis_tres_vezes_seguidas()
            vez = game_rules.vez_do_proximo()
            draw_canvas.limpa_tabuleiro(canvas_move_peca, root_move_peca)
            draw_canvas.desenha(canvas_move_peca, root_move_peca)

    # se dado for 5 mover peca pra casa de saida
    if dado == 5:
        # pode mover para casa de saida
        if game_rules.pode_mover_casa_saida(vez) == True:
            game_rules.tirou_5_no_dado(vez)
            vez = game_rules.vez_do_proximo()

            root_move_peca = draw_canvas.get_root()

            dado_button["state"] = NORMAL  # ativo o botao do dado novamente

            draw_canvas.desenha(canvas_tabuleiro, root_move_peca)

        # nao pode mover para casa de saída e nao tem peca no tabuleiro
        elif game_rules.tem_pecas_no_tabuleiro(vez) == False:
            vez = game_rules.vez_do_proximo()

        # nao pode mover para casa de saída, mas tem peça no tabuleiro
        else:
            canvas_tabuleiro.bind("<Button-1>", clica)

    # TIROU UM NUMERO DIFERENTE DE 5 E NÃO TEM PEÇAS NO TABULEIRO PARA MOVER
    elif game_rules.tem_pecas_no_tabuleiro(vez) == False:
        vez = game_rules.vez_do_proximo()

    else:
        canvas_tabuleiro.bind("<Button-1>", clica)
Esempio n. 5
0
def clica(e):
    global dado, canvas_move_peca, root_move_peca, cores_peca, vez, seis_count, esperando_jogada, dado_button

    caminho_prin = game_rules.get_caminho_principal()
    pos_peca = calcula_posicao_tabuleiro(e.x, e.y)
    seis_count = game_rules.get_seis_count()
    canvas_move_peca = draw_canvas.get_canvas()
    root_move_peca = draw_canvas.get_root()
    if type(pos_peca) is not tuple:  # se for tupla, peca está na casa final
        if pos_peca != None and tem_peca_na_posicao(pos_peca) == True:
            if cor_da_peca_na_posicao_clicada_igual_a_vez(
                    pos_peca, vez) == True:  # so pode mexer peca da cor da vez
                game_rules.move_peca(vez=vez,
                                     dado=dado,
                                     pos_atual_caminho_principal=pos_peca)

                # verifica o que fica na casa que a peca saiu
                tipo_de_casa = qual_tipo_de_casa(pos_peca)

                if tipo_de_casa == "CASA NORMAL":
                    draw_canvas.desenha_quadrado(canvas_move_peca, pos_peca,
                                                 tipo_de_casa)
                if tipo_de_casa == "ABRIGO":
                    cor_de_mudanca = qual_outra_cor_abrigo(pos_peca)
                    draw_canvas.desenha_quadrado(
                        canvas_move_peca,
                        pos_peca,
                        tipo_de_casa,
                        cor_de_mudanca=cores_peca[cor_de_mudanca])
                if tipo_de_casa == "BARREIRA":
                    draw_canvas.desenha_quadrado(
                        canvas_move_peca,
                        pos_peca,
                        tipo_de_casa,
                        cor_de_mudanca=cores_peca[vez])
                draw_canvas.desenha(canvas_move_peca, root_move_peca)

                if dado != 6:
                    vez = game_rules.vez_do_proximo()
                else:
                    game_rules.muda_6_count()
                    if seis_count == 2:
                        game_rules.seis_tres_vezes_seguidas()
                        vez = game_rules.vez_do_proximo()
                        draw_canvas.limpa_tabuleiro(canvas_move_peca,
                                                    root_move_peca)
                        draw_canvas.desenha(canvas_move_peca, root_move_peca)

            # permite apertar o botao de lancar o dado
            dado_button = draw_canvas.get_dado_button()
            dado_button["state"] = NORMAL

            salvar_jogo_button = draw_canvas.get_salvar_jogo_button()
            salvar_jogo_button["state"] = NORMAL

    elif type(pos_peca) is tuple:  # peça está na reta final
        game_rules.move_peca(vez=pos_peca[-1],
                             dado=dado,
                             pos_atual_reta_final=pos_peca[0])

        draw_canvas.desenha(canvas_move_peca, root_move_peca)

        dado_button = draw_canvas.get_dado_button()
        dado_button["state"] = NORMAL

        salvar_jogo_button = draw_canvas.get_salvar_jogo_button()
        salvar_jogo_button["state"] = NORMAL

        # Passando a vez para o proximo
        vez = game_rules.vez_do_proximo()

    # MOSTRA QUEM GANHOU
    if game_rules.verifica_vitoria():
        list_vencedor = game_rules.verifica_vitoria()
        draw_canvas.messagebox.showinfo(
            "{} GANHOU".format(cores_peca[list_vencedor[0]].upper()),
            "1o - {}\n2o - {}\n3o - {}\n4o - {}".format(
                cores_peca[list_vencedor[0]].upper(),
                cores_peca[list_vencedor[1]].upper(),
                cores_peca[list_vencedor[2]].upper(),
                cores_peca[list_vencedor[3]].upper()))