Physique-Chimie & NSI

Cours complets et originaux de Physique-Chimie & NSI

1-07. Programmation modulaire

Nous voici arrivés à la fin du programme ! 😎. Ce « chapitre » va être traité sous forme de projet. Vous allez créer un petit jeu de votre choix à l’aide du module pygame.

L’objectif ici est de vous donnez un aperçu de comment travaille un développeur professionnel :

La seule contrainte que je vous impose est d’utiliser la bibliothèque Pygame.

Qu’est-ce qu'une bibliothèque ?

  • Utiliser des API ou des bibliothèques.
  • Exploiter leur documentation.
  • Créer des modules simples et les documenter.

Une bibliothèque en programmation est un ensemble de fonctions, classes et modules préétablis qui permettent d'étendre les fonctionnalités d'un langage sans avoir à tout réécrire soi-même. C'est une boîte à outils spécialisée que l'on peut utiliser pour réaliser certaines tâches complexes plus facilement.

Les bibliothèques présentent plusieurs avantages majeurs:

  • Gain de temps : pas besoin de réécrire des fonctionnalités existantes
  • Code testé et optimisé : les bibliothèques populaires sont généralement bien testées et efficaces
  • Abstraction : elles permettent d'utiliser des fonctionnalités complexes sans comprendre tous les détails d'implémentation
  • Standardisation : elles fournissent des façons communes d'aborder certains problèmes

Vous connaissez déjà certainement des bilbiotèques comme Numpy ou Mathplotlib.

En Python, on utilise l'instruction import pour intégrer une bibliothèque dans son code. Attention, il est souvent nécessaire d’utiliser cette commande en temps qu’administrateur.

La bibliothèque Pygame

Qu'est-ce que Pygame?

Pygame est une bibliothèque Python spécialisée dans la création de jeux vidéo 2D. C'est une surcouche de la bibliothèque SDL (Simple DirectMedia Layer) qui rend accessible en Python des fonctionnalités comme :

  • L'affichage graphique
  • La gestion des événements (clavier, souris)
  • Le chargement et l'affichage d'images
  • La lecture de sons et de musiques
  • La gestion des collisions
  • L'animation de sprites

Fonctionnalités principales

  1. Système de fenêtres et surfaces
    • Création d'une fenêtre d'affichage
    • Manipulation de surfaces (images)
    • Système de coordonnées (x,y) pour positionner les éléments
  2. Gestion des événements
    • Détection des entrées clavier et souris
    • Boucle d'événements pour réagir aux actions du joueur
  3. Manipulation d'images
    • Chargement d'images depuis des fichiers
    • Redimensionnement, rotation, transformation
    • Animation par succession d'images (sprites)
  4. Son et musique
    • Lecture de fichiers audio
    • Contrôle du volume, pause, reprise
  5. Gestion des collisions
    • Détection quand deux éléments se touchent
    • Gestion des rectangles de collision

Structure typique d’un programme Pygame


		# Importation de la bibliothèque
		import pygame

		# Initialisation
		pygame.init()

		# Création de la fenêtre
		ecran = pygame.display.set_mode((800, 600))
		pygame.display.set_caption("Mon jeu")

		# Variables du jeu
		continuer = True
		horloge = pygame.time.Clock()

		# Boucle principale du jeu
		while continuer:
			# Limitation de vitesse
			horloge.tick(60)  # 60 images par seconde
			
			# Gestion des événements
			for evenement in pygame.event.get():
				if evenement.type == pygame.QUIT:
					continuer = False
			
			# Mise à jour des éléments du jeu
			# ...
			
			# Affichage
			ecran.fill((0, 0, 0))  # Fond noir
			# Dessiner les éléments du jeu
			# ...
			
			# Mise à jour de l'écran
			pygame.display.flip()

		# Fermeture du jeu
		pygame.quit()
	

Ressources

C’est parti ! Amusez-vous bien ! 🤓

Barème de notation détaillé du projet

Critère Barème Descripteurs
Catégorie A — Maîtrise des fondamentaux Pygame (10 pts)
A1. Affichage + formes mobiles 2 0 : écran non fonctionnel
1 : formes affichées mais statiques
2 : au moins un élément mobile bien géré
A2. Gestion des collisions 4 0 : aucune collision
1-2 : détection présente mais réaction absente ou incorrecte
3 : collision détectée + réaction cohérente
4 : collisions bien intégrées dans la logique du jeu
A3. Réaction aux événements 2 0 : aucun event géré
1 : un seul type d'event basique (ex. quitter)
2 : plusieurs events (touches + souris ou plusieurs actions) bien intégrés
A4. Maîtrise démontrée à l'oral 2 0 : l'élève ne repère pas les parties correspondantes
1 : repère mais explique difficilement
2 : identifie et explique clairement les trois mécanismes
Un projet avec uniquement ces bases, correctement réalisé et expliqué = 10/20
Catégorie B — Qualité du code (4 pts)
B1. Lisibilité et organisation 2 0 : code monolithique, noms obscurs, pas de commentaires
1 : effort visible mais partiel
2 : code clair, nommage explicite, commentaires pertinents
B2. Structuration orientée objet et modules 2 0 : pas de classes
1 : une classe ou tentative incomplète
2 : classes cohérentes, réparties en modules distincts
Catégorie C — Richesse et plaisir de jeu (3 pts)
C1. Degré d'approfondissement 2 0 : jeu très basique au-delà du minimum
1 : quelques éléments supplémentaires (score, obstacles, sons…)
2 : jeu élaboré avec mécaniques multiples et finition soignée
C2. Plaisir de jeu 1 0 : difficile ou ennuyeux à jouer
1 : agréable, équilibré, donne envie de rejouer
Catégorie D — Argumentation et recul (3 pts)
D1. Justification des choix d'implémentation 3 0 : aucune justification
1 : explications superficielles (« j'ai fait comme ça parce que ça marchait »)
2 : justifications partielles et cohérentes
3 : argumentation solide sur la structure, les choix de découpage, les alternatives envisagées

Repères de notation

Note Profil type
< 10 Bases incomplètes ou non maîtrisées
10 Les trois fondamentaux fonctionnent et l'élève les maîtrise
12-14 Code propre, quelques classes, jeu un peu enrichi
16-18 Jeu riche, bien structuré en modules, bonne argumentation
20 Jeu abouti, architecture OO claire, argumentation impeccable