コード例 #1
0
def affichageV2(carte, nbdiamand, diamand, taille, x_, y_, nbrcase):
    """
	Affiche la carte dans le menu des map
	
	:param list carte: liste 2D contenant le jeu
	:param int nb_diamand: 
	:param int diamand: 
	:param int taille: taille des cases
	:param int x_: position de l'apercu de la map
	:param int y_ position de l'apercu de la map
	:param int nbrcase: nombre de case a afficher sur l'apercu
	"""
    esthetique.fond("black")
    for y in range(len(carte) - 1, -1, -1):  # y = ligne
        for x in range(len(carte[y]) - 1, -1, -1):  # x = colonne
            dico[carte[y][x]](
                (x + (var["nb_cases"] // 2 - var["pos_x"])) + x_,
                (y + (var["nb_cases"] // 2 - var["pos_y"])) + y_,
                taille,
                nbdiamand,
                diamand,
                "goldenrod3",
            )  # centre le perso
    upemtk.rectangle(
        x_ * taille + nbrcase * taille + 2 * taille,
        y_ * taille,
        var["dimension_fenetre"],
        var["dimension_fenetre"] + 100,
        remplissage="black",
    )
    upemtk.rectangle(
        x_ * taille,
        y_ * taille + nbrcase * taille + 2 * taille,
        var["dimension_fenetre"],
        var["dimension_fenetre"] + 100,
        remplissage="black",
    )
    upemtk.rectangle(
        x_ * taille,
        y_ * taille,
        x_ * taille + 2 * taille,
        var["dimension_fenetre"] + 100,
        remplissage="black",
    )
    upemtk.rectangle(
        x_ * taille,
        y_ * taille,
        var["dimension_fenetre"],
        y_ * taille + 3 * taille,
        remplissage="black",
    )
    upemtk.rectangle(
        x_ * taille + 2 * taille,
        y_ * taille + 3 * taille,
        x_ * taille + nbrcase * taille + 2 * taille + 5,
        y_ * taille + nbrcase * taille + 2 * taille + 5,
        couleur="gold",
        epaisseur=10,
    )
コード例 #2
0
def affiche_map(carte, **kwargs):
    """
	affiche la map en cours de creation
	
	:param list carte: liste 2D contenant le jeu
	"""
    if "nbdiamand" not in kwargs:
        kwargs["nbdiamand"], kwargs["diamand"] = 0, 0

    esthetique.fond("white")
    upemtk.rectangle(
        0,
        0,
        var["w_map"] * var["taille_case"],
        var["h_map"] * var["taille_case"],
        remplissage="black",
    )
    for j in range(var["h_map"]):
        for i in range(var["w_map"]):
            fonction.dico[carte[j][i]](i, j, var["taille_case"], kwargs["nbdiamand"], kwargs["diamand"], "goldenrod3")
コード例 #3
0
def win(nbdiamand, diamand, tempsrestant, cartes, score, nommap):
    """
	Regarde si l'utilisateur gagne si oui, met l'image de victoire et retourne True
	
	:param int nb_diamand: nombre de diamant deja recupere en jeu
	:param int diamand: nombre de diamant requis avant de pouvoir gagner
	:param int tempsrestant: temps restant de la partie en cours
	:param cartes: 
	:param str score: score de la partie
	:param str nommap: nom de la map en cours de jeu
	:return: bool     
	"""
    MS = 0
    if (var["pos_x"] == var["pos_sortie_x"]
            and var["pos_y"] == var["pos_sortie_y"] and nbdiamand >= diamand):
        suivant = 0
        upemtk.efface_tout()
        while suivant == 0:
            suivant, score = esthetique.menu_score(nbdiamand, tempsrestant,
                                                   suivant, score)
        upemtk.efface_tout()
        esthetique.fond("cyan")
        upemtk.texte(
            var["dimension_fenetre"] // 2,
            var["dimension_fenetre"] // 3,
            "Victoire !",
            couleur="black",
            ancrage="center",
            taille=75,
        )
        esthetique.personnage_victorieux()
        esthetique.coffre()
        esthetique.affiche_score_victoire(score)
        if MS == 0:
            test_meilleurscore(nommap, score)
            MS = 1
        if cartes == 6:
            del var["carte"]
        return True
    return False
コード例 #4
0
def loose(carte, tempsrestant):
    """
	test si joueur s'est pris une pierre 
	si oui met l'image de défaite et retourne True
	
	:param list carte: liste 2D contenant le jeu
	:param int tempsrestant: temps restant de la partie en cours
	:return: bool
	"""
    if carte[var["pos_y"] - 1][var["pos_x"]] in ["K", "C"
                                                 ] or tempsrestant <= 0:
        upemtk.efface_tout()
        esthetique.fond("black")
        esthetique.personnage_defaitiste()
        upemtk.texte(
            var["dimension_fenetre"] // 2,
            var["dimension_fenetre"] // 4,
            "DÉFAITE !",
            couleur="red",
            ancrage="center",
            taille=75,
        )
        return True
    return False
コード例 #5
0
def main():
    tools = ["G", "P", "W", "D", "R", "E", "L", "F", "K", "C"]  # block disponible dans la barre d'outil

    esthetique.fond("black")
    var["w_map"] = fonction.my_input("Nombre de colonnes:", "int")
    var["h_map"] = fonction.my_input("Nombre de lignes:", "int")

    var["taille_case"] = int(
        var["dimension_fenetre"] / max([var["w_map"], var["h_map"]])
    )  # fait en sorte que la map reste sur l'ecran
    carte = [["." for i in range(var["w_map"])] for i in range(var["h_map"])]
    element = "."

    while True:
        upemtk.efface_tout()
        affiche_map(carte)
        affiche_tools(tools)

        quitter = fonction.encadrement(
            "Quitter",
            var["dimension_fenetre"] * 2 / 3,
            2,
            "White",
            "white",
            15,
            1,
            1,
            "Impact",
        )

        sauvegarder = fonction.encadrement(
            "Sauvegarder",
            var["dimension_fenetre"] / 3,
            2,
            "White",
            "white",
            15,
            1,
            1,
            "Impact",
        )

        upemtk.mise_a_jour()
        ev = upemtk.donne_evenement()
        type_ev = upemtk.type_evenement(ev)
        if type_ev == "Quitte":
            return -1

        if type_ev == "ClicGauche":
            x_, y_ = (upemtk.clic_x(ev), upemtk.clic_y(ev))
            if fonction.test_clic((x_, y_), quitter):
                return 0
            if fonction.test_clic((x_, y_), sauvegarder):
                save(carte)
            else:
                x = x_ // var["taille_case"]
                y = y_ // var["taille_case"]

                if x < var["w_map"] and y < var["h_map"]:
                    carte[y][x] = element
                elif y_ // var["bandeau"] == 6:
                    element = tools[int(x_ // (var["bandeau"] * 6/len(tools)))]

        elif type_ev == "Touche":
            t = upemtk.touche(ev)
            if t.upper() in fonction.dico:
                element = t.upper()
            elif t.lower() == "s":
                save(carte)
            elif t.lower() == "t":
                # touche pour les test
                if not test_1_entree_1_sortie(carte):
                    test_map(carte, 150, 0)
                    # remet les bonnes tailles
                    var["w_map"] = len(carte[0])
                    var["h_map"] = len(carte)
                    var["taille_case"] = int(
                        var["dimension_fenetre"] / max([var["w_map"], var["h_map"]])
                    )  # fait en sorte que la map reste sur l'ecran
                    var["porte"] = 1

            elif t == "Escape":
                break

        elif type_ev == "ClicDroit":
            if upemtk.clic_y(ev) // var["taille_case"] < len(carte):
                carte[upemtk.clic_y(ev) // var["taille_case"]][
                    upemtk.clic_x(ev) // var["taille_case"]
                ] = "."

    return 0
コード例 #6
0
def affichage(carte, nbdiamand, diamand, tempslumiere):
    """
	Affiche la carte
	
	:param list carte: liste 2D contenant le jeu
	:param int nb_diamand: nombre de diamant deja recupere en jeu
	:param int diamand: nombre de diamant requis avant de pouvoir gagner
	:param int tempslumiere: temps restant de lumiere
	"""
    esthetique.fond("black")
    if time() - tempslumiere < 0:
        esthetique.lumiere(0)
    else:
        esthetique.lumiere(time() - tempslumiere)
    if var["porte"] == 0:
        esthetique.lumiere_escalier()
    carte[2][0] = "F"

    for y in range(len(carte) - 1, -1, -1):  # y = ligne
        for x in range(len(carte[y]) - 1, -1, -1):  # x = colonne
            if carte[y][x] == "R" and var["personnage"]:
                if var["personnage"]:
                    for elem in var["forme_personnage"].values():
                        copy_elem = deepcopy(elem)
                        if elem[1] == "R":
                            copy_elem[2] += var["dimension_fenetre"] // 2
                            copy_elem[4] += var["dimension_fenetre"] // 2
                            copy_elem[3] += var["dimension_fenetre"] // 2
                            copy_elem[5] += var["dimension_fenetre"] // 2

                        elif elem[1] == "C":
                            copy_elem[2] += var["dimension_fenetre"] // 2
                            copy_elem[3] += var["dimension_fenetre"] // 2

                        elif copy_elem[1] == "P":
                            for i in range(len(copy_elem[2])):
                                copy_elem[2][i] = (
                                    copy_elem[2][i][0] +
                                    var["dimension_fenetre"] // 2,
                                    copy_elem[2][i][1] +
                                    var["dimension_fenetre"] // 2,
                                )
                        elif copy_elem[1] in {"T", "Y"}:
                            copy_elem[2] += var["dimension_fenetre"] // 2
                            copy_elem[3] += var["dimension_fenetre"] // 2

                        if copy_elem[1] not in {"T", "Y"}:
                            editeur_personnage.forme_possible[copy_elem[1]][1](
                                *copy_elem[2:])
                        elif copy_elem[1] == "T":
                            editeur_personnage.forme_possible[copy_elem[1]][1](
                                *copy_elem[2:-1], var["taille_case"])
                        elif (copy_elem[1] == "Y" and nbdiamand >= diamand
                              and var["porte"] == 1):
                            editeur_personnage.forme_possible[copy_elem[1]][1](
                                *copy_elem[2:-1], var["taille_case"])

            else:
                dico[carte[y][x]](
                    x + (var["nb_cases"] // 2 - var["pos_x"]),
                    y + (var["nb_cases"] // 2 - var["pos_y"]),
                    var["taille_case"],
                    nbdiamand,
                    diamand,
                    "goldenrod3",
                )  # centre le perso

    if not var["lumiere"]:
        if 400 + (time() - tempslumiere) * 5 < 350:
            esthetique.noir_lumiere(350)
        else:
            esthetique.noir_lumiere(400 + (time() - tempslumiere) * 5)
コード例 #7
0
def menu_echap(temps, tempslumiere):
    """
	affiche un menu si jamais l'utilisateur à appuyer sur echap et 
	renvoie un des différents choix disponible
		(retry, continue, sauvegarder, quitter le jeu)
	
	:param int temps: temps du jeu en debut de menu afin de le conserver
	:param int tempslumiere: temps de lumiere restant
	:return: code de retour, duree de la partie, temps de lumiere
	"""
    d = time()
    while True:
        esthetique.fond("black")
        encadrement(
            "MENU",
            var["dimension_fenetre"] // 2,
            30,
            "White",
            "black",
            50,
            1,
            1,
            "Impact",
        )

        continuer = encadrement(
            "CONTINUER",
            var["dimension_fenetre"] // 2,
            var["dimension_fenetre"] // 5,
            "White",
            "white",
            36,
            1,
            5,
            "Impact",
        )
        sauvegarder = encadrement(
            "SAUVEGARDER",
            var["dimension_fenetre"] // 2,
            2 * var["dimension_fenetre"] // 5,
            "White",
            "white",
            36,
            1,
            5,
            "Impact",
        )
        recommencer = encadrement(
            "RECOMMENCER",
            var["dimension_fenetre"] // 2,
            3 * var["dimension_fenetre"] // 5,
            "White",
            "white",
            36,
            1,
            5,
            "Impact",
        )
        quitter = encadrement(
            "RETOURNER AU MENU",
            var["dimension_fenetre"] // 2,
            4 * var["dimension_fenetre"] // 5,
            "White",
            "white",
            36,
            1,
            5,
            "Impact",
        )

        upemtk.mise_a_jour()
        ev = upemtk.donne_evenement()
        type_ev = upemtk.type_evenement(ev)
        if type_ev == "Quitte":
            return -1, temps + time() - d, tempslumiere + time() - d

        if type_ev == "Touche":
            t = upemtk.touche(ev)
            if t == "Escape":
                return 5, temps + time() - d, tempslumiere + time() - d
        if type_ev == "ClicGauche":
            coords = [upemtk.clic_x(ev), upemtk.clic_y(ev)]
            if test_clic(coords, continuer):
                return 5, temps + time() - d, tempslumiere + time() - d
            if test_clic(coords, sauvegarder):
                return 6, temps + time() - d, tempslumiere + time() - d
            if test_clic(coords, recommencer):
                return 9, temps + time() - d, tempslumiere + time() - d
            if test_clic(coords, quitter):
                return 7, temps + time() - d, tempslumiere + time() - d
コード例 #8
0
ファイル: main.py プロジェクト: SebastienDS/Boulder-Dash
def menu(d, temps):
    esthetique.fond("black")
    if time() - d >= 1:
        temps += 0.1
        d = time()
        if temps < 4:
            esthetique.rockford(1 + temps, 6, 100, 0, 1, "black")
            esthetique.diamand(5.5, 6, 100, 0, 1, "black")
        if temps >= 4 and temps < 15.4 / 3:
            esthetique.pierre_eboulement(5, 2 + (temps - 4) * 3, 100)
            esthetique.rockford(5, 6, 100, 1, 1, "black")
        if temps >= 15.4 / 3:
            esthetique.pierre_eboulement(5, 5.4, 100)
            esthetique.rockford_dead(5, 6, 100, 1, 1, "black")
        if temps >= 6:
            temps = 0

    fonction.encadrement(
        "BOULDER DASH",
        var["dimension_fenetre"] // 2,
        30,
        "White",
        "black",
        50,
        1,
        1,
        "Impact",
    )
    MAP = fonction.encadrement(
        "SELECTION MAP",
        var["dimension_fenetre"] // 2,
        var["dimension_fenetre"] // 5,
        "White",
        "white",
        36,
        1,
        5,
        "Impact",
    )
    Sauvegarde_ = fonction.encadrement(
        "DERNIERE SAUVEGARDE",
        var["dimension_fenetre"] // 2,
        2 * var["dimension_fenetre"] // 5,
        "White",
        "white",
        36,
        1,
        5,
        "Impact",
    )
    EDIT_MAP = fonction.encadrement(
        "EDITEUR DE MAP",
        var["dimension_fenetre"] // 2,
        3 * var["dimension_fenetre"] // 5,
        "White",
        "white",
        36,
        1,
        5,
        "Impact",
    )
    EDIT_PERSO = fonction.encadrement(
        "EDITEUR DE PERSONNAGE",
        var["dimension_fenetre"] // 2,
        4 * var["dimension_fenetre"] // 5,
        "White",
        "white",
        36,
        1,
        5,
        "Impact",
    )

    ev = donne_evenement()
    type_ev = type_evenement(ev)
    if type_ev == "ClicGauche":
        coords = [clic_x(ev), clic_y(ev)]
        if fonction.test_clic(coords, MAP):
            return 1, temps
        if fonction.test_clic(coords, Sauvegarde_):
            return 2, temps
        if fonction.test_clic(coords, EDIT_MAP):
            return 3, temps
        if fonction.test_clic(coords, EDIT_PERSO):
            return 4, temps
    elif type_ev == "Quitte":
        return -1, temps
    mise_a_jour()
    return 0, temps
コード例 #9
0
ファイル: main.py プロジェクト: SebastienDS/Boulder-Dash
def menu_map(d):
    numcarte = 0
    choisis_carte = 0
    nombre_total = len(os.listdir("map"))
    liste_map = os.listdir("map")
    print(list(map(lambda x: x[:-4], liste_map)))
    while choisis_carte == 0:
        efface_tout()
        if numcarte == nombre_total:
            esthetique.fond("black")
            esthetique.point_dinterogation()
        elif numcarte == nombre_total + 1:
            esthetique.fond("black")
            fonction.encadrement(
                "RECHERCHE",
                var["dimension_fenetre"] // 2,
                var["dimension_fenetre"] // 2,
                "White",
                "White",
                48,
                5,
                5,
                "Impact",
            )
        else:
            cartes = liste_map[numcarte]
            (
                cartes1,
                inutile,
                inutile1,
                var["score1"],
                var["score2"],
                var["score3"],
                score,
                nommap,
                tempslumiere,
            ) = fonction.creer_map(cartes)
            fonction.initialiser_partie(cartes1)
            fonction.affichageV2(cartes1, 0, 1, 50, 0, -2, 8)
            esthetique.affiche_score(
                [var["score1"], var["score2"], var["score3"]])
            fonction.encadrement(
                liste_map[numcarte],
                var["dimension_fenetre"] // 2,
                5,
                "White",
                "black",
                24,
                1,
                1,
                "Impact",
            )
        suivant_menu = esthetique.fleche_(11, 5, 50, 1)
        precedent = esthetique.fleche_(1, 5, 50, -1)
        choix = fonction.encadrement(
            "SUIVANT",
            4 * var["dimension_fenetre"] // 5,
            var["dimension_fenetre"] + 30,
            "red",
            "red",
            24,
            5,
            5,
            "Impact",
        )
        retour = fonction.encadrement(
            "Retour au Menu",
            var["dimension_fenetre"] // 5,
            var["dimension_fenetre"] + 30,
            "red",
            "red",
            24,
            5,
            5,
            "Impact",
        )
        mise_a_jour()
        ev = donne_evenement()
        if type_evenement(ev) == "Quitte":
            return -1
        if type_evenement(ev) == "ClicGauche":
            coords = [clic_x(ev), clic_y(ev)]
            if fonction.test_suivant_menu(coords, suivant_menu):
                numcarte += 1
                numcarte = numcarte % (nombre_total + 2)
            if fonction.test_precedent(coords, precedent):
                numcarte -= 1
                numcarte = numcarte % (nombre_total + 2)
            if fonction.test_clic(coords, choix):
                if numcarte == nombre_total:
                    return 6
                elif numcarte == nombre_total + 1:
                    nom = fonction.test_ouverture_custom_map()
                    if nom:
                        return nom
                else:
                    return cartes
            if fonction.test_clic(coords, retour):
                return 0