Durée : 1 heure
Objectifs : Ajouter des obstacles à éviter et détecter les collisions dans votre jeu.
Outil : Thonny.
Votre tortue aventurière doit traverser un labyrinthe ! Elle doit atteindre le trésor sans toucher les obstacles et sans laisser de trace. Si elle touche un obstacle, c’est perdu. Prêts à relever ce défi ?
Reprenez votre code de "La Tortue Aventurière". Voici un rappel du code de base avec des commentaires pour comprendre chaque ligne :
import turtle # Importe le module turtle pour dessiner et déplacer des objets
# Créer la tortue aventurière
t = turtle.Turtle() # Crée une tortue qu’on appelle "t" pour la contrôler
t.shape("turtle") # Donne à la tortue une forme de tortue (mignon, non ?)
t.speed(3) # Définit la vitesse (3 = modérée, entre 1 et 10)
# Créer la cible (trésor)
cible = turtle.Turtle() # Crée une autre tortue qu’on appelle "cible" pour le trésor
cible.shape("circle") # Lui donne une forme de cercle
cible.color("red") # La colore en rouge pour qu’elle soit visible
cible.penup() # Lève le stylo pour ne pas tracer quand elle bouge
cible.goto(100, 50) # Place la cible à la position (100, 50) sur l’écran
screen = turtle.Screen() # Crée une fenêtre qu’on appelle "screen" pour afficher le jeu
screen.listen() # Dit à la fenêtre d’écouter les touches du clavier
turtle.done() # Garde la fenêtre ouverte pour voir le résultat
Note : Assurez-vous que vos fonctions de déplacement et verifier_victoire() fonctionnent.
Faites bouger la tortue avec les flèches du clavier, sans qu’elle laisse de trace :
Exemple : Voici comment coder aller_haut() sans tracer :
def aller_haut():
t.penup() # Lève le stylo pour ne pas tracer
t.setheading(90) # Oriente vers le haut
t.forward(20) # Avance de 20 unités
t.pendown() # Repose le stylo (optionnel)
screen.onkey(aller_haut, "Up")
Votre tâche : Créez aller_bas(), aller_gauche() et aller_droite() en suivant cet exemple, et associez-les aux touches "Down", "Left" et "Right".
Indices :
t.setheading(angle) : 270 (bas), 180 (gauche), 0 (droite).t.penup() au début de chaque fonction.Test : La tortue bouge-t-elle sans laisser de ligne ?
Ajoutez un obstacle à éviter :
obstacle = turtle.Turtle()
obstacle.shape("square")
obstacle.color("black")
obstacle.penup()
obstacle.goto(50, 0)
Faites en sorte que toucher l’obstacle affiche un message :
verifier_collision() qui :
t.distance(obstacle).t.write("Perdu !", font=("Arial", 16, "bold")).verifier_victoire() :
def verifier_victoire():
if t.distance(cible) < 20:
t.write("Gagné !", font=("Arial", 16, "bold"))
Votre tâche : Créez verifier_collision(), puis ajoutez verifier_victoire() et verifier_collision() dans chaque fonction de déplacement (après t.forward(20)).
Test : Touche-t-elle l’obstacle ou la cible ? Que se passe-t-il ?
Empêchez la tortue de traverser l’obstacle :
aller_haut() :
def aller_haut():
t.penup()
t.setheading(90)
t.forward(20)
if t.distance(obstacle) < 20:
t.backward(20)
else:
verifier_victoire()
verifier_collision()
Votre tâche : Modifiez vos fonctions de déplacement pour bloquer la tortue si elle touche l’obstacle.
Indice : Utilisez t.backward(20) pour annuler le déplacement.
Test : Essayez de traverser l’obstacle. Que se passe-t-il ?
Rendez votre labyrinthe unique :
verifier_collision().obstacle.shapesize(2)).import winsound sur Windows).Créez votre programme dans Thonny, testez-le et montrez votre labyrinthe à vos camarades. Qui atteindra le trésor sans perdre ? Soumettez votre code via le Google Form avec 3 lignes de commentaires expliquant vos choix.
Bon courage, explorateurs du labyrinthe ! - 2025 O. Couvercelle