Besoin d'aide projet NsI

Signaler
-
Messages postés
410
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
12 octobre 2020
-
Bonjour,
Mon projet de crée une Rue avec des maisons (nombres d'étages aléatoire, couleur aléatoire et style de fenêtre et toit différents)
J'ai un problème, mes maisons sont à l'envers et je n'arrive pas à les remettre à l'endroit...
Second problème je n'arrive pas à laisser aléatoirement le programme choisir entre les deux type de toit...
Je dois rendre ce projet avant ce soir si vous pouvez m'aider ...
Voici mon code :

from random import *

size(800,600)
background(197,223,255) #couleur de l'arrière plan, ici bleu clair

#----- Rue ----------
def traceRue(nbMaison,posX,posY,r):
translate(posX,posY)
scale(r)
sol(nbMaison)
for i in range(nbMaison):
immeuble(i*180+posX)
scale(1/r)
translate(-posX,-posY)

#----- Sol ----------
def sol(nbMaison):
stroke(0,0,0)
line(0,375,200*nbMaison,375)

#----- Immeuble -----------
def immeuble(x):
"""
x : abscisse du centre de l'étage
"""
#Nombre d'étages ( aléatoire )
nb_etages = randint(1,3)
#Couleurs des éléments (aléatoire)
couleur_facade = couleur_aleatoire()
couleur_porte = couleur_aleatoire()
#Dessin du RDC
rdc(x, couleur_facade, couleur_porte)
#Dessin des étages
niveau = 1
while niveau <= nb_etages:
etage(x, couleur_facade, niveau)
niveau = niveau + 1
#Dessin du toit
toit(x, niveau)

#------------- RDC, Etage et Toit -------------
def rdc(x, c_facade, c_porte):
"""
Paramètres
x : (int) abscisse du côté droit
c_facade : couleur de la façade
c_porte : couleur de la porte
"""
#Dessine la façade
facade(x,c_facade,0)
#Construit la liste des éléments (1 pour la porte)
liste_num_elt = [1,2,2]
shuffle(liste_num_elt) #melange
#
for i in range(0,3):
if liste_num_elt[i]==1: #dessiner une porte
if(randint(0,2)<1):
porte1(x+10+i*40,c_porte)
else:
porte2(x+10+i*40,c_porte)
else: #dessiner une fenetre
fenetre(x+10+i*40,0)

#Couleur façade et porte
c_facade = couleur_aleatoire()
c_porte = couleur_aleatoire()

def etage(x,couleur,y):
fill(couleur)
rect(x,y*60,140,60)

def toit(x,y):
triangle(x,y*60,x+70,y*60+60,x+140,y*60)
def toit2(x,y):
rect(x-20,y*60,180,10)
# ----Facade avec : couleur + 3 elts d'étages----
def facade(x, couleur, niveau):
"""
Paramètres:
x: abscisse du côté droit de la façade
couleur: couleur de la façade
niveau: num niveau
"""

#-------- éléments ------------
def porte1(x,couleur):
"""
Paramètres :
x est l'abscisse du centre de la porte
couleur : couleur de la porte
"""
fill(255)
rect(x,0,30,50)

def porte2(x,couleur):
"""
Paramètres :
x est l'abscisse du centre de la porte
couleur : couleur de la porte
"""
fill(255)
ellipse(x+15,-40,30,30)
rect(x,0,30,-40)

def fenetre(x,y):
"""30x30pixels"""
fill(255)
rect(x,y,30,30)

def porteFenetre(x,y):
"""30 pixels de largeur, 50 pixels de hauteur, 1 ou 2 par étages"""
fill(255)
rect(x,y,30,50)

def toitModele1(x,y):
"""modèle pointu"""
fill(255)
triangle()

def toitModele2():
"""modèle terrasse"""
fill(255)
rect(x,y,140,20)

#------- Couleur aléatoire -------
def couleur_aleatoire():
return color(randint(0,255),randint(0,255),randint(0,255))

#----- Appel de la fonction ------
traceRue(3,100,200,1)

2 réponses

Messages postés
410
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
12 octobre 2020
59
Bonjour z0512,

L'indentation étant importante en Python, merci de re poster ton code avec les balises
mode d'emploi:
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Visuellement, ça doit ressembler à ceci :

def test():
    print('test')

test()
Messages postés
410
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
12 octobre 2020
59
Hello,

peux-tu donner suite ou bien marquer cet appel comme résolu ...