Nous avons choisi le thème de l’Espagne car c’est une une de mes origines, c’est donc un thème qui me tient à cœur. À travers ce titre et ce thème, nous voulons montrer un petit bout de la culture espagnole, c’est pour cela que nous avons choisi la Porte d’Alcala située à Madrid et Alhambra située à Grenade.
Sommaire
Les 2 monuments
La porte d’Alcala est située à Madrid et l’une des 5 anciennes portes qui donnaient accès à la ville. Elle a été construite entre 1769-1778.
L’Alhambra est un ensemble fortifié situé à Grenade, en Andalousie. Cet ensemble a été construit par les Arabes, puis agrandit par la suite par Charles Quint
Le Fond
Nous avons d’abord décidé de créer un fond bleu ciel, puis l’image est coupée en deux par la fonction ligne ci-dessous :
def ligne(ax,ay,bx,by,color_choice) : color(color_choice) penup() goto(ax,ay) pendown() goto(bx,by) penup()
Nous choisissons donc des coordonnées de départ et d’arrivée. Le choix de mettre « color_choice » sera vu plus tard dans l’article.
Ensuite, la création d’une fonction herbe a été nécessaire, puis pour les nuages nous avons donc créé la fonction nuage ci-dessous :
def nuage(x, y): penup() goto(x,y) pendown color("white") for i in range(3): begin_fill() circle(20) end_fill() penup() forward(30) pendown()
La boucle permet la création de 3 cercles côte à côte, ce qui nous permettra de faire le nuage. Pour des raisons d’esthétiques… nous préférons choisir leur emplacement manuellement qu’à l’aide du module ramdom. Ce la nous donne le résultat suivant :
Les fonctions principales
Outres la fonction ligne deux autres fonctions sont importantes :
- La fonction colonnes nous permets de créer les colonnes de la taille et de la largeur que l’on veut dans les deux monuments :
def colonne(x, y, hauteur, largeur): penup() goto(x, y) pendown() color("#9E9FA5") begin_fill() for _ in range(2): forward(largeur) right(90) forward(hauteur) right(90) end_fill()
La boucle permet la création d’un rectangle qui représente les colonnes
- Nous avons ensuite créé une fonction arche qui va aussi servir dans les deux monuments. Une fonction plutôt simple à faire…
def arche(x,y,r): pensize(15) penup() goto(x, y) pendown() color('#9E9FA5') setheading(90) circle(r,180) setheading(90)
Et évidemment tout est saisi manuellement après quelques calculs, bien entendu. Toutes ces fonctions nous perment de créer les monuments.
Fonction Madrid
La fonction Madrid nous crée le premier monument qui est la porte d’Acala, nous n’allons pas nous attarder sur toute la fonction car elle est très longue, nous allons nous attarder sur l’important.
La 1ère phase a été de créer un bâtiment gris comme celui qui suit :
Voici comment nous avons eu le résultat :
- D’abord, nous avons utilisé la fonction herbe montait et grâce à une indentation, l’herbe montait de plus en plus, jusqu’à ce que la boucle soie finie
- Ensuite la fonction colonne rentre en jeu, mais il y a une petite particularité
colonne(70, -10, 254, 29) penup() pendown() colonne(150, -75, 190, 29) penup() pendown() colonne(250, -75, 190, 29) penup() pendown() colonne(350, -75, 190, 29) penup() pendown() colonne(450, -75, 190, 29)
La particularité, comme vous devez le voir, c’est que la 1ère colonne et la dernière colonne sont plus grandes que les 3 milieux. Ce choix s’explique par le fait que la définition ligne finit par des côtés ronds, les colonnes à l’extrémité donnent donc une forme plus géométrique à notre monument.
- Ensuite, la fonction arche est utilisée pour les 3 portes du milieu. En effet, celles sur le côté sont plus petites et rectangulaires, c’est pour cela que la fonction ligne va être réutilisée.
- Pour finir la Première phase et commencer la deuxième, nous avons utilisé la fonctions ligne, et c’est là qu’intervient le choix de mettre « color_choice » cela à pour but faire un petit contraste pour refaire un petit peu les détails du monument.
ya = -79 yb = -79 pensize(13) for i in range(10) : ligne(97, ya, 152, yb, "#9E9FA5") ya -= 7 yb -= 7
for i in range(5) : ligne(256, ya,344, yb, "#B4B4B8") ya += 5 yb += 5 pensize(5)
Tout d’abord, comme nous le voyons, la couleur va soit être dans un 1er cas gris foncé ou soit gros clair. Ensuite, pour faire les bonnes dimensions on adaptait toujours les coordonnées, les indentations soit += soit -= et la répétition et la taille du stylo.
- Enfin, n’ayant pas trouvé comment un triangle, nous avons utilisé Thalès et Pythagore, puis la commande goto pour faire le triangle tout en haut.
La fonction Madrid nous donnes donc le résultat suivant :
Avec 1 couleur :
Avec 2 couleurs :
La fonction étant longue, vous pourrez la retrouver dans le document ci-joint.
Fonction Grenade
Après avoir fait la fonction Madrid, on a crée grâce à la fonction Grenade un bâtiment de l’Alhambra. Comme avant nous allons nous attarder sur le plus important.
La 1ère phase a été de créer le contours du bâtiment de couleur tan comme celui ci-dessous :
Pour ça, nous avons d’abord avons utilisé :
- la fonction colonne et la fonction arche qui nous aide à faire la base du bâtiment. L’utilisation des fonction est pareil que dans la fonction Madrid.
color("#D2B48C") colonne(-105, -285, 20, 165) penup() pendown() colonne(-195, -285, 20, 165) penup() pendown() colonne(-290, -285, 20, 165) penup() pendown() colonne(-387, -285, 20, 165) penup() pendown() colonne(-480, -285, 20, 165) penup() pendown() colonne(-570, -285, 20, 165) arche(-100,-154,42, "#D2B48C") arche(-190,-154,42, "#D2B48C") arche(-287,-154,42, "#D2B48C") arche(-383,-154,42, "#D2B48C")
Ici vous voyez qu’entre les deux fonctions, celle de Madrid et celle Grenade on a rajouté color_choice comme pour la fonction lignes car on avait besoin de changer de couleur entre les deux bâtiments.
- Ensuite, c’est le grand retour de la fonction ligne, et celle là, a encore beaucoup servi. Car pour la première phase elle à servir à faire le début du contours du bâtiment. Son utilisation est toujours la même :
ligne(-565,-145,-565,44,"#D2B48C")
- Dans la deuxième phase, on a fini les contours du bâtiment et on à remplit tout avec des indentations. Cela nous donne donc ce rendu :
- Ici on a encore utilisé beaucoup d’indentation et de boules, notamment de indentation += ou +-:
for i in range(13): ligne(-415, ya, -235, yb, "#D2B48C") ya += 7 yb += 7
for i in range(2): if i==1: ya=44 yb=44 for i in range(4) : ligne(-565, ya, -481, yb, "#E3D9B6")#Arrivé e départ a améliorer ya -= 7 yb -= 7 else : ya=44 yb=44 for i in range(4) : ligne(-90, ya, -174, yb, "#E3D9B6")#Arrivé e départ a améliorer ya -= 7 yb -= 7
- Enfin on utilise une nouvelle fonction qui s’appelle la fonction rempart, cette fonction nous permet de créer les remparts du monument. Son script est le suivant, elle est répété 5 fois dans a fonction Grenade.
def remparts(n) : right(90) i = 0 for i in range(n): left(90) forward(20) right(90) forward(20) right(90) forward(20) left(90) i +=1 if i < 5 : forward(20)
Cette fonction nous donnes le rendu final qui ressemble à ça :
Conclusion
Pour finir, j’espère que cette article vous on aura appris plus sur le codage python. Le fichier est joint à l’article si vous voulez le voir en detail.
N’hésitez pas à aller visiter l’Espagne et notamment c’est deux monument, ils sont plus jolis dans la vrai qu’en code python…