Extraction minière au sein de l’Himalaya
Le premier projet de la classe de 1ère NSI est « Image générative ». Ce projet consiste en la création d’une image sur thème libre. Pour notre image, on a choisi d’aborder les thèmes de la montagne, du ciel et de la mine. Nous avons voulu représenter ainsi, une mine présente au sein de la chaine de montagnes de l’Himalaya sous un ciel étoilé de nuit avec une lune en fond venant se glisser derrière la montagne.
Le fond
Afin de réaliser le fond de notre image, nous avons voulu réaliser un fond dégradé du bleu foncé vers le bleu clair afin de représenter la nuit tombante.
def fond(): for i in range(720): r = 173 - round((i / (720 / 173))) v = 216 - round((i / (720 / 216))) b = 230 - round((i / (720 / 102))) pencolor(r, v, b) forward(1280) goto(-640, -360 + i) fond()
Les étoiles
Ensuite pour réaliser l’ambiance de nuit tombante, nous avons fait le choix de rajouter des étoiles. Pour cela nous avons utilisé le module « randint » nous permettant de placer les étoiles de manière aléatoire.
def etoile(): pencolor("#fff7cd") fillcolor("#fff7cd") for _ in range(130): penup() x = randint(-650, 650) y = randint(-360, 360) goto(x, y) pendown() begin_fill() circle(randint(1, 4)) end_fill() etoile()
Lune
Pour rester dans cette ambiance de nuit tombante nous avons rajouté une lune en fond à laquelle nous avons rajouté des taches pour que celle ci soit plus fidèle à la vrai lune.
def lune(): penup() goto(10,-50) color("#EEF0F1") fillcolor("#EEF0F1") begin_fill() circle(220) end_fill() lune() def taches(x, y,z): for i in range(15): penup() goto(x, y) pendown() shapesize(z) pencolor("#000000") fillcolor("#a4a4a4") begin_fill() circle(z) end_fill() taches(100, 200,20) taches(-110, 100,50) taches(-90, 250,30) taches(0, 200,15) taches(70, 75,42) taches(70, 270,24) taches(150, 100,12)
Les montagnes
Ici nous avons créer des montagnes sous forme de chaine où logera par la suite notre grotte minière. Nous avons rajouter un rectangle afin de combler le trou entre les montagnes même si cela est peux conventionnel.
def triangle(x,y,z): penup() goto(x,y) pendown() pensize(4) color("#757575") fillcolor("#757575") begin_fill() for i in range(3): forward(500) left(120) end_fill() triangle(-235,-200,10) triangle(70,-350,10) triangle(-600,-350,10) triangle(-450,-400,10) triangle(-800,-500,10) triangle(310,-500,10) def rectangle(): penup() goto(-110,-250) pendown() pensize(150) pencolor("#757575") forward(400) #Peu conventionnel rectangle()
Ombre des montagnes
Afin de rajouter du réalisme à notre image nous avons décidé de rajouter une ombre derrière les montagnes en suivant presque le même schéma que celles ci.
def ombre(x,y,z): penup() goto(x,y) pendown() pensize(4) color("#323232") fillcolor("#323232") begin_fill() for i in range(3): forward(500) left(120) end_fill() ombre(-280,-200,10) ombre(30,-350,10) ombre(-640,-350,10) ombre(-490,-400,10) ombre(-840,-500,10) ombre(270,-500,10)
Le sol
Nous avons décidé de faire un sol dégradé marron foncé afin de rappeler la couleur de la terre et aussi se rapprocher du modèle réel présent dans la réalité.
def sol(): for i in range(107): r = round(101 + (30 - 60) * (i / 107)) v = round(67 + (1 - 20) * (i / 107)) b = round(33 + (1 - 20) * (i / 107)) pencolor(r, v, b) forward(1280) goto(-640, -360 + i) sol()
La grotte
La grotte était notre idée principale ainsi nous avons décidé de la mettre au centre. Pour marquer la profondeur de celle ci nous avons choisi le noir pour récréer l’obscurité de la grotte.
def entree(x,y,z): penup() goto(x,y) pendown() pensize(4) color("#000000") fillcolor("#000000") begin_fill() for i in range(3): forward(z) left(120) end_fill() entree(-120,-253,150) entree(-90,-253,165) entree(40,-253,50)
La neige
Toujours dans la dynamique de ressemblance à la réalité, nous avons fait le choix de rajouter au sommet des montagnes de la neige comme sur les sommet de l’Himalaya. Pour cela nous avons encore utilisé la fonction triangle que nous avons préalablement définie.
def neige(x,y,z,w): penup() goto(x,y) pendown() pensize(4) color("#f7f7f7") fillcolor("#f7f7f7") begin_fill() for i in range(3): forward(z) left(w) end_fill() neige(-49,120,130,120) neige(-50,120,30,-120) neige(-20,120,50,-120) neige(35,120,15,-120) neige(50,120,30,-120) neige(273,0,95,120) neige(273,0,30,-120) neige(300,0,15,-120) neige(310,10,40,-120) neige(350,0,15,-120) neige(-397,0,95,120) neige(-397,0,30,-120) neige(-340,0,15,-120) neige(-365,5,25,-120) neige(-328,0,25,-120) neige(-225,-10,50,120) neige(-225,-10,10,-120) neige(-210,-10,20,-120) neige(-190,-10,15,-120) neige(-575,-110,50,120) neige(-575,-110,10,-120) neige(-560,-110,15,-120) neige(-548,-107,10,-120) neige(-540,-110,15,-120) neige(535,-110,50,120) neige(535,-110,18,-120) neige(555,-110,9,-120) neige(565,-110,20,-120)
Relief
Toujours dans une démarche de réalisme, nous avons voulu apporter un relief à, la montagne paraissant plate. Pour cela nous avons simplement tracé des traits prolongeant certaines arrête des montagnes.
def delimitation(x,y,z,w): pencolor("#2c2c2c") pensize(3) penup() goto(x,y) pendown() goto(z,w) delimitation(-60,110,-208,-150) penup() delimitation(-402,0,-519,-210) penup() delimitation(270,-1,145,-210)
Chariot
En accord avec notre première idée, nous avons rajouté un chariot à la mine pour que de un l’image soit plus compréhensible mais aussi pour venir rajouter des détail à notre image. Nous avons fait le choix également de rajouter des rails pour celui ci.
Problèmes rencontrés
Nous avons eu de nombreux problèmes durant la création de notre image. En effet lors de faire la lune nous avions eu pour idée de rendre les taches aléatoire avec le module « randint » , mais cela n’allais pas car les taches se superposais et ne changeais pas de taille. Aussi lorsque nous avons fais le wagon nous réfléchissions a un moyen de le remplir réalistement mais nous n’avons pas trouver alors nous avons fais le choix de placer de simples triangles.
Sources
Afin de réaliser notre image, nous avons utilisé plusieurs sources : Tout d’abord nous avons utilisé chat gpt afin de déboguer certaines parties de notre code, ensuite nous avons utilisé le forum « stack overflow » pour trouver notre fond et réaliser notre dégradé, enfin nous avons utilisé le site « python guides » pour nous renseigner sur des commandes notamment sur l’utilisation du module « random » lors de la création des étoiles.