예제 #1
0
def main():
    """ Fonction principale du programme """

    #---------- Initialisation ----------
    numeroDeMap = "Edited"  # le numéro de la map à lire (changeable)
    carte, inventaire = initialisationMap(numeroDeMap)
    carte_debut = [list(l) for l in carte]
    largeurFenetre, hauteurFenetre, largeurInventaire = generationFenetre(
        carte)
    infoMap = [
        largeurFenetre, hauteurFenetre, largeurInventaire
    ]  #Stockage des infos dans une liste pour limiter le nombre de paramètres envoyés aux fonctions
    tk.cree_fenetre(largeurFenetre, hauteurFenetre)
    #-------- Fin initialisation --------

    # -- boucle de jeu
    while True:
        affichage(largeurFenetre, hauteurFenetre, largeurInventaire,
                  inventaire, carte)

        # conditions de sortie
        if partieGagnee(carte):
            dessinerVictoire(largeurFenetre, hauteurFenetre)
            tk.attente_clic()
            break

        #Gestion des touches
        typeEvent = attenteMouvement(carte, infoMap)
        if typeEvent == "r":  #commande pour revenir à la précédante sauvegarde
            carte, inventaire = recharger()
            continue
        elif typeEvent == "s":  #commande de sauvegarde
            ecritureFichierSauvegarde(carte, inventaire)
            continue
        elif typeEvent == "b":  #commande de reset
            carte = [list(l) for l in carte_debut]
            inventaire["nbClefs"], inventaire["nbCoups"] = 0, 0
            continue
        #Touches pour quitter le jeu
        elif typeEvent == "Quitte" or typeEvent == "Escape":
            break
        carte = typeMouvement(
            typeEvent, carte, infoMap,
            inventaire)  #Modifications de la carte par rapport à la touche

    tk.ferme_fenetre()
예제 #2
0
    tk.cercle(x + cstCentrage, y + cstCentrage, rayon, "red", "#ff5050", 2)
    tk.cercle(x + cstCentrage, y + cstCentrage, rayon / 1.2, "red", "#ff5050",
              2)


def dessinerVictoire(largeurFenetre, hauteurFenetre):
    tk.texte(largeurFenetre // 4,
             hauteurFenetre // 3,
             "Victory !",
             'black',
             police="Times New Roman",
             taille=60)


if __name__ == '__main__':
    """ Ce programme sert à tester les différentes fonctions de dessin """
    tk.cree_fenetre(300, 300)
    dessinerQuadrillage(300, 300, 100,
                        [['.', '.', '.'], ['.', '.', '.'], ['.', '.', '.']])
    dessinerMur(0, 0, 100)
    dessinerClef(100, 0, 100)

    dessinerCible(0, 100, 100)
    dessinerBoite(100, 100, 100)

    dessinerJoueur(0, 200, 100)
    dessinerPorte(100, 200, 100)

    tk.attente_clic()
    tk.ferme_fenetre()
예제 #3
0
def init_game():
    """
    Charge la fenetre.
    """
    utk.cree_fenetre(win_size[0], win_size[1])
예제 #4
0
 def start(self):
     upemtk.cree_fenetre(self.size, self.size)
     self.get_images()  # TODO : FIND A BETTER WAY TO INIT THIS IMAGES
예제 #5
0
def main():
    """ Fonction principale """
    #### Définition des constantes et initialisation des variables ###########

    # info sur le contenu des cellules
    matriceTerrain, matriceTuiles, mursVer, mursHor = creerMatriceTerrain()
    tuilesRestantes = [i for i in range(2, 10)]

    infoPion = dict()  # info sur la position des pion
    initPions(1, (24, 24), infoPion)
    initPions(2, (25, 25), infoPion)
    initPions(3, (25, 24), infoPion)
    initPions(4, (24, 25), infoPion)

    dicEsc = {(25, 26): (26, 25), (26, 25): (25, 26)}

    dicTuile2 = defDicTuile2()
    dicTuile7 = defDicTuile7()

    #initialisé à 0 (inactif), passe à 1 si actif
    #on utilise une liste car objet mutable (dégueux mais pratique)
    modeVortex = [0]

    #roulement entre 0 (aucun portail selectionné) et les autres portails accessibles
    vortexActif = [0]

    tuilesPosees = [0, 1]
    modeTelekinesie = [0]
    telekinesieIndexTuileActive = [0]
    telekinesiesRestantes = [2]

    dicVortex = {1: [(23, 26)], 2: [(24, 26)], 3: [(26, 23)], 4: [(25, 23)]}

    sortieActive = False
    partiePerdue = False
    partieGagnee = False
    dureeTotalePartieInitiale = 180  # En secondes
    tempsRestant = dureeTotalePartieInitiale
    modifTemps = [0]

    listeGagnants = []

    debugActif = -1  # -1 -> vdésactivé ; 1 -> activé
    vitesse = 1 / 500  # Vitesse du mode debug

    #### Ouverture de la fenêtre #############################################

    tk.cree_fenetre(1900, 1000)

    #### Demander au joueur ce qu'il faut faire ##############################
    chargerSave = UIecranTitre()

    #### Choix du nombre de joueur ###########################################
    touchesDeBase = defTouchesDeBase()

    if not chargerSave:
        nb_joueurs = UIchoixNbrJoueur()
        touchesTotales = attributionDesTouches(nb_joueurs, touchesDeBase)
        touchesPartieParJoueur = touchesTotales[0]
        touchesPartie = touchesTotales[1]

    else:

        matriceTerrain, infoPion, nb_joueurs, sortieActive, tempsRestant, touchesPartie, touchesPartieParJoueur, listeGagnants, matriceTuiles, mursVer, mursHor, tuilesPosees, dicVortex, dicEsc, telekinesiesRestantes = chargerPartie(
        )
        for tuile in tuilesPosees:
            if tuile in tuilesRestantes:
                tuilesRestantes.remove(tuile)
    pionActif = dict()
    for i in range(1, nb_joueurs + 1):
        pionActif[i] = 1

    #### Entrée dans le jeu ##################################################

    heureDebut = time()
    dureeTotalePartie = tempsRestant

    while True:  # Boucle Principale
        tempsPause = gestionEntreeClavier(
            matriceTerrain, mursVer, mursHor, infoPion, pionActif,
            sortieActive, debugActif, vitesse, listeGagnants, dicVortex,
            dicEsc, dicTuile2, dicTuile7, modeVortex, vortexActif,
            touchesPartie, touchesPartieParJoueur, nb_joueurs, touchesDeBase,
            tempsRestant, matriceTuiles, tuilesRestantes, tuilesPosees,
            telekinesieIndexTuileActive, modeTelekinesie,
            telekinesiesRestantes)
        heureDebut = heureDebut + tempsPause

        if not sortieActive:  # Si les sorties ne sont pas activées on regarde si on peut les activer
            sortieActive = pionSurObjet(matriceTuiles, matriceTerrain,
                                        infoPion)

        # Mise à jour de l'image, gestion de la victoire/défaite
        tk.efface_tout()
        partiePerdue, tempsRestant = afficherPlateau(
            matriceTerrain, mursHor, mursVer, infoPion, listeGagnants,
            pionActif, debugActif, sortieActive, heureDebut, dureeTotalePartie,
            modifTemps, vortexActif, dicVortex, touchesPartie,
            touchesPartieParJoueur, matriceTuiles, modeTelekinesie,
            tuilesPosees, telekinesieIndexTuileActive, telekinesiesRestantes)
        partieGagnee = verifVictoire(listeGagnants)
        if partieGagnee or partiePerdue:
            break

    # Affichage des messages de victoire/défaite
    finPartie(partieGagnee, partiePerdue)

    tk.attente_clic_ou_touche()
    tk.ferme_fenetre()
예제 #6
0
def main():
    """ Fonction principale du programme """
    global largeurFenetre, hauteurFenetre  #Limiter les paramètres des fonctions

    #---------- Initialisation ----------
    carte = initialiseCarte()
    largeurFenetre, hauteurFenetre = generationFenetreEditeur(carte)
    tk.cree_fenetre(largeurFenetre, hauteurFenetre)
    selection = (0, 0)  # pour savoir quel objet l'utilisateur a selectionné
    nouvelleSelection = (0, 0)
    message = [
        "", 0
    ]  # Un message à afficher à l'écran [0] contient le message et [1] contient un boolean d'affichage (0 ou 1)
    #-------- Fin initialisation --------

    # ---- Boucle principale du jeu
    quitter = False
    while not (quitter):

        #Affichage
        affichageEditeur(carte, selection,
                         message)  #Afficher la carte à l'écran

        #Retirer le message après un clic
        if message[1] > 0:
            message[1] = 0

        ############ Boucle de Gestion des évènements ############
        while True:  # Boucle de récupération des évènements

            ev = tk.donne_evenement()
            typeEv = tk.type_evenement(ev)
            if typeEv == "Quitte":  # Quand quelqu'un clique sur la croix pour fermer la fenêtre
                quitter = True
                break  #Sortir de la boucle d'attente
            elif typeEv == "ClicGauche":
                nouvelleSelection = gestionClicGauche(ev)
                break
            elif typeEv == "ClicDroit":
                break
            elif typeEv == "Touche":
                # ------------ gestion des touches ------------
                touche = tk.touche(ev)
                if touche == "s":
                    # On vérifie la carte, on affiche un message si nécessaire ou on la sauvegarde
                    verification = verifierCarte(carte)
                    if verification[0]:
                        ecritureCarte(carte)
                        message = ["La carte a été sauvegardée !", 1]
                    else:
                        message = verification[1]
                elif touche == "r":
                    nouvelleSelection = "vide"  # pour éviter qu'un nouveau truc se place
                    carte = initialiseCarte()
                elif touche == "Escape":  #touche pour sortir
                    quitter = True
                break
                # -------- fin de gestion des touches -------

            tk.mise_a_jour()  #mise à jour des évènements
        ############ Fin de gestion des évènements ############

        #------ Changements sur le jeu
        if nouvelleSelection not in {
                "mur", "cible", "joueur", "porte", "clef", "boite", "vide"
        }:
            i, j = nouvelleSelection  # on place l'objet sélectionné sur la case
            carte[i][j] = transformeChaineVersCaractere(selection)
        else:  # si un nouveau truc est sélectionné, on le change
            selection = nouvelleSelection
        #-------
    tk.ferme_fenetre()