Un casse-briques

Un exemple de projet

Le casse-briques est un genre de jeu vidéo souvent classé dans la catégorie arcade, apparu en 1975 avec le jeu Breakout. Il est directement inspiré de Pong. Le principe général est de détruire, au moyen d'une ou plusieurs balles, un ensemble de briques se trouvant dans un niveau pour accéder au niveau suivant.

Wikipédia

Objectif du projet

Réaliser un casse-briques.

  • Avec de la POO (programmation orientée objet)

  • Avec une interface graphique(IHM)

  • Langage : Python

  • Environnement de conception : Processing

Le choix de Processing est motivé par le fait que la création d'interfaces graphiques y soit particulièrement aisée.

Les programmes s'implémentent en Python (2.7) et sont interprétés en Java.

Il faut donc (cahier des charges) :

  • Créer 3 classes (Paddle,Ball et Brick).

  • Créer le programme principal pour faire fonctionner le casse-briques.

Les bases de Processing

L'espace de travail

Ce programme affiche une fenêtre de dimension 605x400 pixels avec un fond noir.

La fonction setup() permet d'initialiser le programme, comme par exemple la création d'une fenêtre (size(605,400)) de dimensions : 605x400 pixels

La fonction draw() est une boucle infinie, qui permet l'actualisation de la fenêtre 60 fois par seconde (par défaut), on peut néanmoins gérer cette actualisation avec la commande frameRate(fps).

Les références complètes des commandes disponibles sont répertoriées sur le site officiel de Processing.py

Le repérage dans la fenêtre

Par convention, le coin en haut à gauche de la fenêtre correspond aux valeurs x=0 et y=0.

Les valeurs x sont croissantes vers la droite et les valeurs y sont croissantes vers le bas.

Le paddle

Le paddle est un rectangle situé au bas de la fenêtre que l'utilisateur peut déplacer horizontalement de gauche à droite avec deux touches du clavier.

Le paddle ne doit pas sortir de la fenêtre.

On crée la classe dans un nouvel onglet.

On donne un nom à l'onglet : Paddle (ce sera le nom du fichier py créé (Paddle.py))

Dans le programme Principal

La balle

  • La balle est un cercle qui se déplace dans la fenêtre avec une certaine vitesse.

  • Elle doit rebondir sur les bords

  • Elle doit rebondir sur le paddle

On crée la classe dans un nouvel onglet.

On donne un nom à l'onglet : Ball ce sera le nom du fichier py créé (Ball.py))

La collision

La méthode utilisée pour la collision est :

  • (px,py) coordonnées du Paddle

  • r : rayon de la balle

Donc la balle(bx,by) est en collision avec le paddle si :

  • px - r < bx < px+w +r

  • py - r < by < py

Dans le programme principal

On rajoute dans le setup() :

On rajoute dans le draw() :

Quelques modifications

On fait en sorte que la balle ne se mette en mouvement qu'au clic de souris.

Cette variable permettra de stopper le jeu...

Création d'une variable playingGame (booléen) :

Modification à apporter à la fonction draw :

Création de la fonction mousePressed() pour mettre playingGame à TRUE :

Les briques

Une brique est un rectangle statique avec une certaine couleur.

Dans le programme principal

On crée une liste pour contenir les objets briques.

Création de la liste :

Modification du setup() :

La fonction addbrick(x,y,hits) :

La balle doit casser les briques

Une méthode à rajouter à la classe Ball
Le code à rajouter dans le draw() :

On parcourt la liste des briques à l'envers et si une collision est détectée, on supprime la brique.

Le fait de parcourir la liste à l'envers permet de n'oublier aucune brique à chaque tour de boucle.

Le schéma ci-dessous explique la raison de ce parcours

le code à rajouter dans le draw() :

Pour terminer

Pour ce projet

Le programme proposé est un embryon de casse-briques.

Pour finaliser le projet, on peut :

  • Faire en sorte que le joueur puisse perdre...

  • Rajouter un score...

  • Ajouter des malus..des bonus...

  • Ajouter des niveaux...

  • etc.

Un compte rendu de projet peut se faire autour du code lui-même en expliquant, à chaque étape, les solutions retenues pour résoudre les problèmes et les pistes qui n'ont pas abouties.

Un point important

Il faut se préparer pour le grand oral à développer un point en particulier.

Celui-ci se doit être en lien avec le programme de NSI.

Autrement dit :

Le jeu en lui-même n'a que peu d'intérêt, la partie POO par contre y est centrale.