Article épinglé

lundi 13 décembre 2021

Mes beaux sapins de Noël, python et turtle

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 ;)