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.

14  Évaluation du projet

L'évaluation comprend : 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:

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.