• Aucun résultat trouvé

Projet de programmation en Langage C : Casse briques

N/A
N/A
Protected

Academic year: 2022

Partager "Projet de programmation en Langage C : Casse briques"

Copied!
3
0
0

Texte intégral

(1)

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.

(2)

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 :

(3)

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.

Références

Documents relatifs

 La valeur 164 quand il est interprété comme une simple décomposition binaire. Ceci illustre l’importance du type dans la manipulation des données, et ce point sera abordé

Parce que le compte de briques est équivalent au volume multiplié par le naibanum, le volume est l ’équivalent du compte de briques multiplié par l’inverse du naibanum afin

Écrire un programme demandant aux joueurs la dimension de la grille sur laquelle ils veulent jouer, et leur permettant de faire une partie.. Le gagnant est le joueur alignant un

Il débute par le caractère % , suivi éventuellement d'une valeur entière correspondant à la taille maximum de la donnée (= nombre de caractères s'il s'agit d'une chaîne ou

Comme pour tous les containers “racine” cette disposition (application de la méthode add) ne s’applique pas directement sur le JFrame mais sur son “Content Pane” (tapisserie

} bloc de gestion de l’exception Tout bloc try doit toujours être suivit d’un bloc catch gérant les exceptions pouvant être lancées dans ce bloc try. Si une exception est lancée

Ecrire une application Java qui affiche un cadre (fermant) de titre ´ hh Cadre avec balle qui se d´eplace ii , ` a fond bleu dans lequel apparaˆıt une balle jaune de rayon dix

Il faudra rendre au final une archive tar.gz de tout votre projet (tout le contenu de votre projet svn), ce dernier contenant les balises de profilage, des conseils pour faciliter