Université Paris 6
DEUG MIAS
| Module MIAS-O
Année 2003-2004
|
Columns
Valérie Ménissier-Morain
Groupe 4
1 Nom du jeu
Ce jeu est connu sous le nom de columns ou jewelbox
sous Unix, Macintosh ou Windows. Nous en présentons ici une version
hybride. Nous proposerons à la fin de ce document un certain nombre de
caractéristiques supplémentaires issues de ces différentes versions et
que l'on pourra implanter à volonté dès lors que le coeur du jeu est
raisonnablement écrit et débogué.
2 Le principe du jeu
Le principe du jeu est le suivant: des triplets de pièces tombent et
remplissent inexorablement un espace de jeu rectangulaire et le
jeu se termine lorsque le niveau des pièces a atteint le sommet de
l'espace de jeu. Le joueur agit sur les triplets qui tombent pour
retarder le remplissage de l'espace de jeu en provoquant des
suppressions par alignement.
Nous allons à présent décrire en détail le jeu.
3 À quoi ça ressemble
La fenêtre se compose de l'espace de jeu, de la zone d'affichage du
triplet suivant et de la zone de description de l'état du jeu.
L'espace de jeu comporte 6 colonnes et 20 lignes. Il y a 6 types de
pièces possibles. Sur les illustrations de ce document, ces 6 pièces
différentes seront différentiées par des motifs (rayures et
quadrillage) pour des raisons d'impression, mais à l'écran on les
représente plutôt par des disques de couleurs différentes. Il y a un
et un seul triplet qui tombe à un instant donné, on l'appelle le
triplet courant ou le triplet en cours. Le triplet qui
le suivra quand celui-ci aura arrêté de descendre s'appelle le
triplet suivant et il est affiché à côté de l'espace de jeu
pour que le joueur puisse anticiper.
Pour détailler l'état du jeu, nous allons décrire les notions
d'alignement et de suppression.
4 Alignements et suppressions
On parle d'alignement lorsqu'au moins 3 pièces (c'est-à-dire
l'équivalent d'un triplet) identiques sont alignées horizontalement,
verticalement ou diagonalement. Cet alignement disparaît alors et les
pièces situées au-dessus descendent pour remplir les espaces laissés
libres.
Un alignement peut compter plus de 3 pièces et surtout une fois une
suppression effectuée, d'autres alignements peuvent apparaître comme
le montre l'exemple ci-dessous.
La chute de la pièce courante (encadrée sur ce dessin) va provoquer un
premier alignement de 3 pièces horizontales (entouré d'une ellipse):
Il va ensuite apparaître un alignement de 4 pièces diagonalement:
puis deux alignements de 3 pièces verticaux:
ce qui va nous donner finalement
Il est bien évident que la suppression d'alignements ralentit le
remplissage de l'espace de jeu.
5 Scores
Cette suppression est aussi récompensée par une augmentation des
scores, selon le calcul suivant: 300 points pour le triplet de base,
plus 150 points par pièce supplémentaire multiplié par 2 à la
puissance le numéro de l'étape de suppression. Sur l'exemple
ci-dessus, on a supprimé 3 pièces à la première étape, 4 pièces à la
deuxième et 6 pièces à la troisième, cela rapporte donc
300+150×(3-3)×21+150×(4-3)×22+150×(6-3)×23
soit 4500 points.
6 Niveaux et vitesse
Un niveau correspond à la suppression de 50 pièces. On passe alors au
niveau suivant et les pièces tombent alors plus vite selon le tableau
suivant:
Niveau |
Vitesse |
Niveau |
Vitesse |
0 |
1.5 |
13 |
0.15 |
1 |
1.25 |
14 |
0.1375 |
2 |
1.0 |
15 |
0.125 |
3 |
0.75 |
16 |
0.1125 |
4 |
0.5 |
17 |
0.1 |
5 |
0.25 |
18 |
0.0875 |
6 |
0.2375 |
19 |
0.075 |
7 |
0.225 |
20 |
0.0625 |
8 |
0.2125 |
21 |
0.05 |
9 |
0.2 |
22 |
0.0375 |
10 |
0.1875 |
23 |
0.025 |
11 |
0.175 |
24 |
0.0125 |
12 |
0.1625 |
25 |
0.0 |
où la vitesse est exprimée par la durée en secondes pendant laquelle
le triplet en cours ne bouge pas. Quand ce temps est écoulé le triplet
en cours descend d'un cran.
Cette table peut être récapitulé par les deux formules suivantes:
vn = |
ì
í
î |
3/2-n/4 |
si n £ 5 |
5/16-n/80 |
si 6 £ n £ 25 |
|
La suppression de n pièces fait diminuer le nombre de pièces
restantes du niveau de n. Lorsque ce nombre devient négatif, on
passe au niveau suivant et le nombre de pièces restantes correspond à
50 plus ce nombre négatif.
7 Vies
Le joueur dispose de 3 vies, c'est-à-dire que l'espace de jeu va se
remplir à 3 reprises avant que le jeu ne soit terminé.
8 Pause
Le joueur a la possibilité de geler le jeu, les pièces cessent alors
de tomber. Pour que ce ne soit pas une occasion de tricher, l'espace
de jeu ainsi que le triplet suivant.
9 État du jeu
On indique le score, le niveau, la vitesse, le nombre de pièces à
supprimer pour compléter le niveau et passer au niveau suivant, si la
suppression d'un alignement provoque un son ou non, si le jeu est
pausé ainsi que le nombre de vies restantes.
10 Actions du joueur
Le joueur peut déplacer le triplet courant s'il n'y a pas
d'obstacle. Le déplacement peut s'effectuer vers la gauche (touche
"j") ou vers la droite (touche "l"). Il peut faire
chuter ce triplet quand il estime que sa position de chute est
satisfaisante (touche " ").
Le joueur peut effectuer une rotation (touche "k") sur le
triplet courant, selon une permutation circulaire comme le montre le
schéma suivant:
Le joueur peut aussi arrêter la partie en cours sans quitter le jeu
(touche "a"), commencer un nouveau jeu (touche "n"),
quitter complètement le jeu (touche "q"), mettre du son ou
l'enlever (touche "s"), effectuer une pause ou revenir au jeu
(touche "p"), visualiser la table des meilleurs scores
(touche "v et on appuie sur n'importe quelle touche ensuite
pour revenir au jeu).
11 Fin du jeu
Lorsque les 3 vies dont disposait le joueur sont épuisées ou bien si
le joueur a abandonné le jeu, on regarde si le score peut figurer
parmi les dix meilleurs scores et on affiche alors un écran de
félicitations au joueur et on lui demande le nom sous lequel il veut
être enregistré dans la table des meilleurs scores, en lui proposant
d'utiliser son nom de login.
Ensuite, de même que si on a demandé au cours du jeu à visualiser la
table des meilleurs scores, on affiche cette table:
On propose ensuite au joueur de rejouer.
12 Et ensuite?
Nous mentionnons ici quelques améliorations possibles si tout le reste
a été implémenté, testé et commenté convenablement.
12.1 Améliorations techniques
On peut imaginer avoir des pièces qui ne soient pas de simples disques
de couleurs ou bien qu'il y ait une musique tout au long du jeu ou que
le son émis lors d'une suppression soit plus intéressant qu'un simple
beep ou que ce son varie selon le niveau. On peut aussi envisager que
le fond de l'espace de jeu ou la fenêtre soit décoré, qu'il y ait une
page d'accueil, que les pages d'affichage des scores et de
consultation de l'avis de l'utilisateur soient plus jolies. On peut
continuer ainsi longtemps.
On peut essayer d'animer les mouvements donnés au triplet par le joueur.
12.2 Un exécutable avec des options
On peut produire un exécutable qui accepte des options telles que
-display qui permet d'afficher la fenêtre de jeu sur une
machine différente de celle sur laquelle le code s'exécute,
-niveau pour pouvoir commencer directement à un niveau donné,
etc.
12.3 Enrichissement du jeu
-
joker
- : il s'agit d'un triplet qui apparaît aléatoirement dans
le jeu et qui supprime toutes les pièces de l'espace de jeu de la
même couleur que celle sur laquelle il est arrivé en bas
- pièce supplémentaire à chaque niveau à partir d'un certain
niveau
- : à partir d'un certain niveau, à chaque nouveau niveau, il y
a une pièce possible de plus. Par exemple, à partir du niveau 10, il
y a 7 pièces, puis au niveau 11, il y en a 8 et ainsi de suite.
- pièce différenciée
- : il s'agit d'une pièce qui se comporte comme
les autres mais dont les alignements rapportent plus que les autres.
13 Plan du cours
Le nombre de cours indiqué entre parenthèses est indicatif. Il pourra
varier en pratique selon les besoins.
-
Présentation du projet, principes de programmation/génie
logiciel, représentation du jeu (1 séance)
- Graphisme (3 séances)
- Gestion événementielle (3 séances)
- Exceptions, modularisation (1 séance)
- Algorithme de suppression (2 séances)
- Gestion de fichiers / table des meilleurs scores (1 séance)
14 Évaluation du projet
L'évaluation comprend :
-
un rapport écrit;
- un oral de soutenance en salle machine;
- un examen final d'une heure.
La note finale comprend 60% d'écrit et 40% de contrôle continu.
Dossier de projet
Chaque binôme devra rédiger un dossier de projet.
Le contenu de ce dossier est décrit dans le document
intitulé « Règles à utiliser pour programmer votre projet Ocaml ».
Pour mémoire:
-
une description générale du problème;
- une justification précise du découpage fonctionnel
- une explication précise et brève de ce que fait chaque fonction d'un
point de vue extérieur, produite probablement par Ocamldoc,
- une description plus approfondie des fonctions ayant un contenu
algorithmique important,
- un listing commenté du programme;
- si des modifications ou des ajouts ont été apportés au sujet
initial, une description précise de ces modifications ou ajouts.
Soutenance
Cette soutenance est individuelle.
Chaque étudiant disposera de 10 minutes pour présenter son travail,
procéder à une démonstration et répondre aux questions des interrogateurs.
Planning
Les cours ont lieu les 27 février, 3, 5, 12, 19, 24 et 26 mars, 2,
7, 9 et 30 avril.
Les TP ont lieu le 5, 12, 19 et 26 mars, 2, 9 et 30 avril, 5, 7 et 12 mai.
Une séance de TP en libre accès est en train d'être organisée.
Le rapport doit être remis au plus tard le lundi 17 mai au
secrétariat d'informatique du DEUG (bâtiment 31, 2ème étage, Mme
Ménard).
Les soutenances devraient avoir lieu le mercredi 19 et le vendredi 21
mai. La date de soutenance de chaque étudiant sera tirée au sort lors de
la dernière séance de TP, le vendredi 7 mai.
Ce document a été traduit de LATEX par
HEVEA.