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