Objectif
Réaliser une forêt de sapins de Noël, comme c'est de saison... en python avec turtle. Pour la musique c'est ici! et pour se faire une idée de votre impact écologique si vous êtes partisan c'est là!
Pour les commandes, nous utiliserons :
- from turtle import *
pour la bibliothèque turtle - dot()
pour les points de départ des troncs - setpos(x,y)
pour aller à x,y - import random as rd
pour les commandes de la bibliothèque random - randint(a,b)
pour tirer un entier aléatoirement entre a et b - penup()
pour lever mon crayon et ne pas tracer de trait - pendown()
pour abaisser mon crayon et tracer des traits
Pour le mémo des commandes, voir ici:
https://perso.limsi.fr/pointal/_media/python:turtle:turtleref.pdf
Etape 0 - Script donné aux élèves
Le script du dessous fut commenté en début de séance:
from turtle import *
import random as rd
dot()
setpos(0,10)
setpos(-15,5)
penup()
setpos(40,40)
pendown()
setpos(100,100)
for i in range (10):
print(rd.randint(1,10))
Etape 1 - Réaliser un sapin simple
Script
from turtle import *
dot()
setpos(0,10)
setpos(-15,5)
setpos(0,20)
setpos(-10,15)
setpos(0,30)
setpos(-5,25)
setpos(0,40)
setpos(0,10)
setpos(15,5)
setpos(0,20)
setpos(10,15)
setpos(0,30)
setpos(5,25)
setpos(0,40)
Amélioration
Je veux maintenant jouer avec la taille de mon sapin, car je n'oublie pas l'objectif d'une forêt d'arbres de tailles différentes...
Etape 2 - Réaliser un sapin simple 2 fois plus grand
Script
from turtle import *
c=2
dot()
setpos(0*c,10*c)
setpos(-15*c,5*c)
setpos(0*c,20*c)
setpos(-10*c,15*c)
setpos(0*c,30*c)
setpos(-5*c,25*c)
setpos(0*c,40*c)
setpos(0*c,10*c)
setpos(15*c,5*c)
setpos(0*c,20*c)
setpos(10*c,15*c)
setpos(0*c,30*c)
setpos(5*c,25*c)
setpos(0*c,40*c)
Amélioration
Je veux maintenant que la taille de mon sapin varie aléatoirement de 1 à 3. Facile;)
Etape 3 - Réaliser un sapin simple de taille variable
Script
from turtle import *
import random as rd
c=rd.randint(1,3)
dot()
setpos(0*c,10*c)
setpos(-15*c,5*c)
setpos(0*c,20*c)
setpos(-10*c,15*c)
setpos(0*c,30*c)
setpos(-5*c,25*c)
setpos(0*c,40*c)
setpos(0*c,10*c)
setpos(15*c,5*c)
setpos(0*c,20*c)
setpos(10*c,15*c)
setpos(0*c,30*c)
setpos(5*c,25*c)
setpos(0*c,40*c)
Amélioration
Je veux maintenant positionner mon sapin de taille variable à un emplacement différent de l'origine x=0 et y=0.
Mais où déclarer ces variables?
Etape 4 - Réaliser un sapin de taille variable à x=100, y=50
Script
from turtle import *
import random as rd
c=rd.randint(1,3)
x=100
y=50
penup()
setpos(x,y)
pendown()
dot()
setpos(x+0*c,y+10*c)
setpos(x+-15*c,y+5*c)
setpos(x+0*c,20*c+y)
setpos(x+-10*c,15*c+y)
setpos(x+0*c,30*c+y)
setpos(x+-5*c,25*c+y)
setpos(x+0*c,40*c+y)
setpos(x+0*c,10*c+y)
setpos(x+15*c,5*c+y)
setpos(x+0*c,20*c+y)
setpos(x+10*c,15*c+y)
setpos(x+0*c,30*c+y)
setpos(x+5*c,25*c+y)
setpos(x+0*c,40*c+y)
Amélioration
Si je veux plusieurs sapins, je vais penser boucle et point de départ aléatoire. Mais où déclarer ces variables?
Etape finale - Réaliser la forêt
Script
from turtle import *
import random as rd
for i in range (30):
c=rd.randint(1,3)
x=rd.randint(-200,200)
y=rd.randint(-100,100)
penup()
setpos(x,y)
pendown()
dot()
setpos(x+0*c,y+10*c)
setpos(x+-15*c,y+5*c)
setpos(x+0*c,20*c+y)
setpos(x+-10*c,15*c+y)
setpos(x+0*c,30*c+y)
setpos(x+-5*c,25*c+y)
setpos(x+0*c,40*c+y)
setpos(x+0*c,10*c+y)
setpos(x+15*c,5*c+y)
setpos(x+0*c,20*c+y)
setpos(x+10*c,15*c+y)
setpos(x+0*c,30*c+y)
setpos(x+5*c,25*c+y)
setpos(x+0*c,40*c+y)
Amélioration
Nous pourrions mettre de la couleur, et puis des boules aussi ;)
Tiens, idée du matin, on pourrait mettre les petits sapins plutôt vers le haut et derrière les grands... Je vous laisse voir...
Aucun commentaire:
Enregistrer un commentaire
Tout commentaire nous engage ;)