Besoin d'aide projet NsI

Fermé
zo0512 - 27 sept. 2020 à 15:52
Phil_1857 Messages postés 1883 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 - 4 oct. 2020 à 19:55
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)
A voir également:

2 réponses

Phil_1857 Messages postés 1883 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 178
27 sept. 2020 à 17:32
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()
0
Phil_1857 Messages postés 1883 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 178
4 oct. 2020 à 19:55
Hello,

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