Tu vas créer un jeu Zelda interactif !

10. ÉTAPE 9 : Afficher le Score et le Texte


Objectif

L'élève apprend à manipuler les polices de caractères (fonts) pour afficher des informations en temps réel sur l'écran de jeu.

Question motivante

"C'est bien de voir 'Touché' dans la console noire en bas, mais comment le joueur peut-il voir son score directement dans le jeu ?"

Concepts clés à maîtriser

  • pygame.font.SysFont() : Choisir une police d'écriture.

  • font.render() : Transformer une chaîne de caractères (String) en une image (Surface).

  • La concaténation/f-string : Mélanger du texte fixe ("Score : ") et une variable variable.


1. Préparation (Avant la boucle)

Il faut initialiser le système de texte et créer une variable pour le score.

Python
# ===== SCORE ET POLICE =====
score = 0
# On choisit une police système (Arial) de taille 36
font = pygame.font.SysFont("Arial", 36)

def afficher_score(x, y):
    # 1. Créer l'image du texte (True = lissage des bords)
    score_img = font.render(f"Ennemis vaincus : {score}", True, (255, 255, 255))
    # 2. L'afficher à l'écran
    screen.blit(score_img, (x, y))

2. Mise à jour du score (Dans la section COLLISION PROJECTILE)

Quand un ennemi est supprimé, on augmente le score.

Python
        # Dans votre boucle de collision projectile <-> ennemi :
        if enemy in enemies: 
            enemies.remove(enemy)
            score += 10  # On ajoute 10 points !

3. Affichage (Dans la section AFFICHAGE)

Il suffit d'appeler notre fonction tout à la fin de la boucle, pour que le score soit écrit par-dessus tout le reste.

Python
    # Tout à la fin, juste avant pygame.display.flip()
    afficher_score(20, 20)

Le Défi Final "Game Over" :

"Si la liste enemies devient vide (longueur = 0), affichez un grand message 'BRAVO, NIVEAU TERMINÉ !' au milieu de l'écran et arrêtez le mouvement du joueur."


Félicitations !

Avec ces 9 étapes, vos élèves ont construit un moteur de jeu complet :

  1. Affichage & Fenêtre

  2. Mouvement Joueur

  3. Système d'Ennemis (IA simple)

  4. Collisions (Game Over)

  5. Attaque de mêlée

  6. Graphismes (Sprites)

  7. Monde & Limites

  8. Projectiles (Tir)

  9. Interface (Score)