Need help mini jeu Py

Fermé
Chamalo - Modifié le 14 nov. 2021 à 22:35
yg_be Messages postés 23361 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 29 novembre 2024 - 15 nov. 2021 à 10:22
Bonjour,
j ai un peu besoin d aide avec le module turtle, en gros je dois realiser un petit jeu en 2d dont le plan est constituer d'une matrice ou chaque nombre représente une case et la fonction de la case ex: 1 = un mur, 0 = un espace vide, etc. je vous mon code en dessous mais j ai verifier toute les fonctions et elles fonctionnent toutes sauf tracer_plan qui semble tourner dans le vide si jamais vous avez des idées de comment le fix ce serait vrmnt cool (Ps : je sais que c'est bcp demandé car le code est long mais je suis un peu désespéré ... dans tt les cas je comprendrais que vous ayez la flemme et merci à ceux qui prendront la peine de m'aider)

le code :

ZONE_PLAN_MINI = (-240, -240)  # Coin inférieur gauche de la zone d'affichage du plan
ZONE_PLAN_MAXI = (50, 200)  # Coin supérieur droit de la zone d'affichage du plan
POINT_AFFICHAGE_ANNONCES = (-240, 240)  # Point d'origine de l'affichage des annonces
POINT_AFFICHAGE_INVENTAIRE = (70, 210)  # Point d'origine de l'affichage de l'inventaire

# Les valeurs ci-dessous définissent les couleurs des cases du plan
COULEUR_CASES = 'white'
COULEUR_COULOIR = 'white'
COULEUR_MUR = 'grey'
COULEUR_OBJECTIF = 'yellow'
COULEUR_PORTE = 'orange'
COULEUR_OBJET = 'green'
COULEUR_VUE = 'wheat'
COULEURS = [COULEUR_COULOIR, COULEUR_MUR, COULEUR_OBJECTIF, COULEUR_PORTE, \
            COULEUR_OBJET, COULEUR_VUE]
COULEUR_EXTERIEUR = 'white'

# Couleur et dimension du personnage
COULEUR_PERSONNAGE = 'red'
RATIO_PERSONNAGE = 0.9  # Rapport entre diamètre du personnage et dimension des cases
POSITION_DEPART = (0, 1)  # Porte d'entrée du château


# Désignation des fichiers de données à utiliser
fichier_plan = 'plan_chateau.txt'
fichier_questions = 'dico_questions.txt'
fichier_objets = 'dico_objets.txt'

import turtle

def lire_matrice(fichier_plan):
    """
    lecture du fichier contenat le plan du chateau
    Entrée: le plan du chateau
    Résultat: une matrice qui est une liste de liste contenant une ligne horizentale des cases du plan
    """
    fichier_ouvert = open(fichier_plan)
    matrice = [i.split() for i in fichier_ouvert]
    return matrice

global matrice, position

matrice = lire_matrice('plan_chateau.txt')
a = 0
b = 1
position= (a,b)

def calculer_pas(matrice): # calcule la taille des cases !!!!! pas bon !!!! voir pour a et b non piles!!!!
    a = int((190 /len(matrice[1]))) #largeur possible/largeur plan
    b = int((200/len(matrice))) #longeur possible/longeur plan
    return min(a, b) #retourne la taille des carrés


def coordonnees(case, pas):
    a = case[0]
    b = case[1]

    L = pas
    res = ((-a * L)+(50-L) , (b * L) - 240 )
    return res

def tracer_carré(dimension): #trace un carré de cotés dimension
    turtle.forward(dimension)#trace un premier coté
    turtle.left(90)#rotation de 90 degrés vers la gauche
    turtle.forward(dimension)
    turtle.left(90)
    turtle.forward(dimension)
    turtle.left(90)
    turtle.forward(dimension)
    turtle.left(90)

def tracer_case( case, couleur, pas): #trace une case de certaines couleur et dimension à un certain endroit!!!! reste le certain endroit
    turtle.up()
    turtle.goto(case)#A changer !!!!
    turtle.down()
    turtle.color(couleur)
    turtle.begin_fill()
    tracer_carré(pas)
    turtle.end_fill()
    turtle.done()

def afficher_plan(matrice):
    pas = calculer_pas(matrice)
    i=0
    j=0
    while i <= len(matrice):
        while j <= len(matrice[0]):
            point = coordonnees((i, j), pas)
                       if matrice[i][j] == 0:
                tracer_case(point, 'white', pas)
                j += 1
            elif matrice[i][j] == 1:
                tracer_case(point, 'grey', pas)
                j += 1
            elif matrice[i][j] == 2:
                tracer_case(point, 'yellow', pas)
                j += 1
            elif matrice[i][j] == 3:
                tracer_case(point, 'orange', pas)
                j += 1
            elif matrice[i][j] == 4:
                tracer_case(point, 'green', pas)
                j += 1
        i += 1


afficher_plan(matrice)

Message modifié par la modération
Pour une lecture plus facile du code, à l'avenir utilisez les balises, VOIR CETTE PAGE
A voir également:

1 réponse

yg_be Messages postés 23361 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 29 novembre 2024 Ambassadeur 1 556
15 nov. 2021 à 10:22
bonjour,
je ne vois pas
tracer_plan()
.
peux-tu partager les fichiers nécessaires pour tester le programme?
0