Vous êtes sur la page 1sur 3

Projet

de programmation en Langage C : Casse briques



Université de Picardie Jules Verne - Version 1.0, 27 novembre 2017

Ce projet a pour objectif de réaliser un jeu de « Casse briques » simple en utilisant la bibliothèque
SDL2.
Toutes les fonctions de SDL2 sont expliquées sur : https://wiki.libsdl.org/
Vous y trouverez aussi quelques exemples qui vous aideront à réaliser le projet.

Compilation et édition de lien :
Pour utiliser les structures et fonctions de la bibliothèque utiles à votre programme, vous inclurez
les fichiers d’en-tête « SDL2/SDL.h » et « SDL2/SDL_image.h ».
Pour générer l’exécutable de votre programme, vous le lierez aux bibliothèques SDL2 et SDL2_image
(en passant en paramètre du compilateur –lSDL2 –lSDL2_image).

Consignes générales (IMPORTANT) :

Vous effectuerez le travail en quatre étapes. Les dates limites de chaque étape sont fermes (tout
retard entraînera des pénalités, toute étape non rendue entraînera une défaillance au projet, et
donc au module).
La notation tiendra compte de la qualité de votre code, en particulier des commentaires et de la
modularité (compilation séparée avec makefile).

Le projet est individuel.

Chaque étape sera rendue par mail sous forme d'une archive compressée avec gzip contenant
l'ensemble des fichiers nécessaires à la compilation et à l'utilisation du projet. L'enseignant à qui
vous devrez envoyer votre projet vous sera communiqué ultérieurement.

Première étape (à rendre au plus tard le mardi 5 décembre à 15h) :
Vous devez être capable de faire afficher votre écran de jeu, avec une image de fond, un mur de
briques en haut de l’écran, une raquette en bas de l’écran et une balle.



Deuxième étape (à rendre au plus tard le lundi 11 décembre à 22h) :
Vous devez être capable de déplacer votre raquette horizontalement avec les flèches gauche et
droite du clavier et de lancer une balle en appuyant sur la touche espace.

Troisième étape (à rendre au plus tard le lundi 18 décembre à 22h):
Vous devez pouvoir faire rebondir la balle sur la raquette et sur les murs.
Lorsque la balle touche une brique, celle-ci est détruite.
Vous calculerez un score en tenant compte des briques cassées. Vous afficherez le score sur l’écran.

Quatrième étape (à rendre au plus tard le samedi 23 décembre à 22h):
Vous devez ajouter un niveau : lorsque toutes les briques sont cassées, vous devez proposer une
nouvelle configuration de briques lue à partir d’un fichier texte où chaque caractère présent (par
exemple X) représente une brique, chaque espace représente l’absence de briques.
BONUS : On peut aussi par exemple proposer un fichier texte plus élaboré où des caractères distincts
représentent des briques de type différent (détruite en deux coups, indestructible…)


Par exemple, le fichier contenant :

X Y X Y X Y X Y
Y X Y X Y X Y X
X X X X X X X X
YXYXYXYXYXYXYXYX
X X X X X X X X
X X X X X X X X
Y Y Y Y Y Y Y Y
XYXYXYXYXYXYXYXY

permet d’afficher le mur de briques suivant :




Indications

Première étape

Pour créer une fenêtre d’affichage, il faut utiliser la fonction SDL_CreateWindow.

Pour afficher une image, plusieurs étapes sont nécessaires :

- Il faut d’abord charger l’image avec la fonction IMG_Load(« chemin de l’image »), qui
retourne un pointeur sur une SDL_Surface (pixels bruts).

- Il faut ensuite créer une texture à partir de cette surface, en adaptant (taille, couleur…)
l’image chargée à un renderer, créé pour la fenêtre avec SDL_CreateRenderer. Pour cela on
utilise la fonction SDL_CreateTextureFromSurface, qui prend 2 paramètres : le renderer et
la surface, et retourne un pointeur sur une SDL_Texture.

- On « copie » ensuite tout ou partie de la texture dans le renderer avec la fonction
RenderCopy, qui prend en paramètre le renderer, la texture, la partie de la texture à copier
et l’endroit où la copier. Ces deux derniers paramètres sont des pointeurs sur des SDL_Rect.
Pour utiliser l’image complète on peut aussi passer le pointeur NULL en lieu et place du
premier rectangle. Pour utiliser la totalité de la surface du renderer on peut aussi passer le
pointeur NULL en lieu et place du deuxième rectangle.

Le renderer contient l’ensemble des éléments à rendre à l’écran. Il stocke les éléments du rendu en
mémoire. Pour les faire afficher réellement, il faut utiliser la fonction
SDL_RenderPresent(renderer).

Tout travail sur des images doit être placé entre les appels IMG_Init() et IMG_Quit().
Tous vos objets (texture, surface, renderer, écran…) doivent être détruit ou libérés lorsqu’ils ne sont
plus utiles. Avant d’utiliser les fonctions de la SDL il faut appeler SDL_Init() et SDL_Quit() à la fin du
programme.

Vous aimerez peut-être aussi