Frogger

Remarque

Requis : session 5 (Breakout) terminée.

Une grenouille veut atteindre l’autre rive. Pour ça, elle doit traverser une route chargée et une rivière dangereuse. Les voitures roulent sur trois voies, des rondins flottent sur l’eau. Un faux pas et c’est fini.

Démarrage

Télécharge le code de départ et décompresse le ZIP. Ouvre main.py dans Thonny et clique sur Run. Tu vois le terrain de jeu mais la grenouille ne bouge pas encore. C’est toi qui remplis les fonctions.

Comment ça marche ?

L’écran est divisé en voies horizontales de 40 pixels :

  • En haut : 5 étangs où la grenouille doit arriver sans encombre
  • Rivière (3 voies) : des rondins passent en flottant. Sur un rondin, tu es en sécurité ; dans l’eau, tu te noies.
  • Berge en herbe : un coin tranquille au milieu
  • Route (3 voies) : les voitures roulent dans les deux sens. Être touché = mort.
  • En bas : position de départ de la grenouille
TEGEL = 40
KOLOMMEN, RIJEN = 13, 14

# Voies : (rij, richting, snelheid)
AUTO_BANEN = [
    (6,  1, 2),   # à droite, lent
    (7, -1, 4),   # à gauche, rapide
    (8,  1, 3),   # à droite, moyen
]

Les voitures et les rondins sont des objets pygame.Rect dans une liste. À chaque frame, tu les déplaces tous et tu les supprimes quand ils sortent de l’écran.

La grenouille se déplace par pas fixes de TEGEL pixels. Appuie sur une flèche et la grenouille saute d’une case dans cette direction.

Tu vérifies les collisions avec rect.colliderect(andere_rect).

✅ Basic

  • Déplacer la grenouille : intercepte les flèches dans KEYDOWN et adapte kikker.x et kikker.y avec TEGEL.
  • Faire apparaître les voitures : remplis spawn_auto(). Choisis une voie au hasard, crée un Rect juste en dehors de l’écran, ajoute-le à auto_lijst.
  • Bouger les voitures : dans update() : décale chaque voiture avec rect.x += richting * snelheid. Supprime les voitures sorties de l’écran. Garde au moins 6 voitures.
  • Faire apparaître les rondins : remplis spawn_hout(). Même principe, mais avec HOUT_BANEN et une largeur plus grande.
  • Bouger les rondins : dans update() : décale et supprime comme pour les voitures. Garde au moins 4 rondins.
  • Collision avec une voiture : si kikker.colliderect(auto) : appelle sterf().
  • Noyade : si la grenouille est dans la rivière (ligne 2, 3 ou 4) et pas sur un rondin : sterf().
  • Vérification des étangs : si la grenouille est près d’un étang vide : mets huizen_gevuld[i] = True, score += 10, réinitialise la grenouille. 5 étangs remplis = gagné.

C’est bon ? Tu as un Frogger qui fonctionne !

⭐ Stretch

  • Compteur de vies : le système de levens est déjà prêt. Fais en sorte que le jeu s’arrête si levens <= 0 et affiche « GAME OVER ».
  • Chronomètre : ajoute un chronomètre. Commence avec 30 secondes par niveau. Si le chronomètre arrive à zéro, tu perds une vie. Affiche le chronomètre dans le HUD. Chaque étang rempli te donne 5 secondes de plus.
  • Difficulté : augmente la vitesse des voitures et des rondins à mesure que le score monte (snelheid = basis + score // 50).

🔥 Expert

  • Mouche bonus : un insecte vert apparaît au hasard sur la carte et se déplace. Attrape-le pour 20 points bonus. Fais-le disparaître après 5 secondes.
  • High score : enregistre le meilleur score dans une variable high_score. Affiche-le à côté du score actuel. Mets-le à jour quand le joueur bat un nouveau record.
  • Véhicules différents : ajoute des camions (2 cases de large, plus lents) et des motos (1 case, plus rapides). Utilise une liste séparée ou un champ type.
  • Animation : fais clignoter la grenouille un instant quand elle meurt (dood_timer est déjà prêt). Dessine un petit plouf quand la grenouille se noie.

Téléchargements

  • Code de départ : main.py avec le terrain de jeu, la grenouille et tout le code de dessin prêts ; c’est toi qui remplis la logique.

Inspiré du classique Frogger (1981, Konami). Dessins avec pygame.draw.