:: Enseignements :: ESIPE :: E3INFO :: 2013-2014 :: Programmation C ::
[LOGO]

ESIPE-Crush Saga


Quelques news

But du projet

L’objectif est de proposer une implémentation en C du célèbre jeu Candy Crush Saga. Ce jeu consiste à éliminer des bonbons d’une grille de jeu en combinant de 3 à 5 bonbons de même catégorie afin de gagner des points. La combinaison est soit verticale, soit horizontale, soit en “T” (en utilisant 5 bonbons), soit en “L” (en utilisant 5 bonbons.

Lorsqu’une combinaison est réalisée, les bonbons correspondants sont effacés de la grille de jeu. La grille de jeu est toujours remplie de bonbons. Pour ce faire toute case vide est remplacée par le contenu de la case au-dessus d’elle, cette dernière devenant vide (à son tour, elle sera remplacée). Les cases vides de la ligne la plus haute de la grille sont remplacées par des bonbons insérés aléatoirement.

Les combinaisons sont obtenues en échangeant de place des paires de bonbons voisins (verticalement ou horizontalement). Seuls les échanges créant une combinaison sont autorisés. S’il n’y a plus de combinaisons valides, la grille est regénérée avec le même ensemble de bonbons mais disposé aléatoirement. Le joueur possède un nombre limité et fixé à l’avance d’échanges autorisés et un score à atteindre pour gagner le niveau correspondant. Les combinaisons de plus de 3 bonbons permettent, en plus de créer des cases vides, de créer un bonbon sépcial dans l’une des cases vidées.

Une combinaison de 4 bonbons sur une ligne ou une colonne génère un bonbon rayé verticalement ou horozontalement. L’utilisation d’un bonbon rayé dans une combinaison efface la ligne ou la colonne entière (en suivant le sens des rayures).

Une combinaison de 5 bonbons en “T” ou “L” génère un bonbon explosif. L’utilisation d’un bonbon explosif dans une combinaison provoque une explosion supprimant les bonbons environnant (le carré 3x3 entourant le bonbon explosif).

Une combinaison de 5 bonbons en ligne ou colonne génère un bonbon multi-couleur. L’utilisation d’un bonbon multi-couleur dans une combinaison (même de taille 2) éliminera tous les bonbons de ce type de la grille de jeu.

Travail demandé

Implémenter une version du jeu permettant de jouer avec la souris ou le clavier. Pour la partie graphique, vous utiliserez la bibliothèque Simple DirectMedia Layer (SDL) http://www.libsdl.org/index.php. Une présentation succinte de la bibliothèque et de son utilisation en C ansi est disponible à http://www.ai.univ-paris8.fr/~audibert/ens/01-INITIATIONC_SDLx.pdf.

Conditions de développement

Le but de ce projet est moins de pondre du code que de développer le plus proprement possible. C'est pourquoi vous développerez ce projet sur le serveur SVN de l'université. Comme nous attendons de vous que vous le fassiez sérieusement, votre rendu devra contenir un dump du fichier de logs de votre projet SVN, afin que nous puissions nous assurer que vous avez bien développé par petites touches successives et propres (commits bien commentés), et non pas avec un seul commit du résultat la veille du rendu. Le nom de votre projet sur le SVN DOIT suivre la norme suivante : esipecrush-<login1>-<login2><login1> et <login2> représentent les logins des deux membres du binôme.

Conditions de rendu

Vous travaillerez en binômes et vous lirez avec attention la Charte des Projets. Vous rendrez votre projet au moyen d'un package Debian. Le rendu consistera donc en un mail dans lequel vous donnerez l'URL de votre repository, qui devra se trouver sur votre compte web de l'université. Le test de votre projet se fera avec la commande suivante :

sudo apt-get install esipecrush

La commande esipecrush doit alors être installée et doit pouvoir permettre le lancement de votre application.

Afin de pouvoir accéder aux sources de votre travail, vous préparerez également un package source contenant les choses suivantes :
Comme pour l'exécutable, l'accès à votre package source se fera au moyen de apt-get :

apt-get source esipecrush


Remarques importantes :
Le projet est à rendre par mail à tous les enseignants (i.e. Guillaume Blin et Boulanouar Ibtissem).