| Programmez par plaisir! |
30-07-2010 03:40 |
Introduction
Description
Screenshots
Documentation
Versions
Téléchargements
Il s'agit d'un jeu où des souris entrent par une case appelée Entrée et qui se déplacent dans un niveau jusqu'à une case de Sortie. Le joueur n'intervient pas directement sur les éléments animés du jeu; il change juste la topologie du décor. Le but est donc de réussir à faire sortir un certain nombre de souris en temps donné. Ce jeu a été programmé en Java de manière multi-threadée.
Ce projet a pour objectif de réaliser un jeu informatique nommé Mice'n'Cats. Ce jeu
affiche un décor en deux dimensions découpé en cases où évoluent
des souris et des chats. Des murs permettent de fermer le décor et de donner une configuration
spécifique pour le déplacement des chats et des souris.
Le ou les chats sont présents dans le décor à des positions spécifiques
au démarrage du jeu. Les souris entrent par une case particulière appelée "
entrée " et se déplacent dans le décor jusqu'à trouver une case " sortie ".
Les souris se déplacent selon l'algorithme suivant :
- elles entrent sur le décor avec une direction prédéfinie (il n'y a que quatre
directions : nord, sud, est, ouest);
- lorsqu'elles ne peuvent plus avancer en raison de la présence d'un mur, une direction
différente et acceptable est choisie au hasard;
- si une souris rentre en collision avec un chat, c'est-à-dire, arrive sur la même case,
elle est dévorée et retirée du jeu.
Le joueur humain n'intervient pas directement sur les éléments animés du jeu
mais peut changer la topologie du décor. Il peut ajouter des murs ou des cases spéciales
permettant de modifier la trajectoire des souris. Les cases ajoutées sont en nombre limité
et défini au début du tableau. Les murs initiaux du décor ne peuvent pas être
retirés. Les murs et les cases spéciales ajoutées en cours de partie peuvent
être retirées et reviennent dans ce cas dans le lot des cases disponibles.
Un décor ou "tableau" est gagné lorsque le joueur a réussi à faire sortir un
certain nombre de souris en un temps donné. Le nombre de souris entrant sur le tableau peut
être lui aussi limité. Lorsqu'un tableau est gagné, le jeu passe au tableau suivant.
Les tableaux s'enchaînent selon une difficulté croissante : les tableaux sont fournis par
le maître d'oeuvre.
A la fin du jeu, c'est-à-dire à la fin des tableaux ou lorsque le joueur a perdu, son score
est évalué et stocké avec son nom s'il fait partie des dix meilleurs scores. Le
score est évalué en partant d'une base fournie dans la description du tableau
modifié par :
- une soustraction de points selon le nombre de souris dévorées,
- un ajout de points lorsque le joueur termine avant le temps limite (s'il y en a un).
Tous les éléments du jeu sont représentés de manière graphiques.
Les cases spéciales sont les suivantes :
- des cases de changement de direction (lorsque la souris pénètre dans cette case, sa
direction est changée);
- des cases de protection (dans lesquelles le chat ne peut entrer);
- des cases de téléportation en lien deux à deux.
D'un démarrage à l'autre, les dix meilleurs résultats doivent pouvoir être
retrouvés et sont donc stockés dans un fichier.
Le joueur doit pouvoir réaliser les actions suivantes :
- démarrer une partie;
- arrêter une partie;
- mettre en pause;
- reprendre une partie;
- sélectionner l'action en cours, c'est-à-dire, le type de case qu'il va poser;
- supprimer une case posée.
Il est clair que, quelle que soit la machine exécutant le programme, ce dernier doit respecter
une vitesse adaptée au joueur humain. De même, il est important que l'utilisation du jeu
respecte des minimums ergonomiques : réponse fluide aux interactions avec le joueur, affichage
synchrone avec l'état du jeu, etc.
Les tableaux doivent être chargés à partir de fichiers qui sont décrits en ASCII
et ont le format de l'algo.
Les nombres sont soit des valeurs entières décrites en décimal ou la valeur "-1"
pour indiquer qu'il n'y a pas de limite.
La description du décor est un tableau de la largeur donnée (une ligne de texte par
ligne du tableau) et de la hauteur donnée où les cases sont représentées
par des caractères :
- ' ' : une case libre,
- 'C' : une cases libre avec un chat (position initiale du chat),
- 'E' : l'entrée des souris,
- 'S' : la sortie des souris,
- '#' : un mur.
Algo :
- Largeur du plateau.
- Hauteur du plateau.
- Temps limite (peut être infini).
- Nombre de souris qui vont rentrer sur le plateau.
- Nombre de souris qu'il faut faire sortir pour passer au niveau suivant.
- Nombre de flèches de direction Nord que vous pouvez poser sur le plateau.
- Nombre de flèches de direction Sud que vous pouvez poser sur le plateau.
- Nombre de flèches de direction Est que vous pouvez poser sur le plateau.
- Nombre de flèches de direction Ouest que vous pouvez poser sur le plateau.
- Nombre de blockers que vous pouvez poser sur le plateau.
- Nombre de protections que vous pouvez placer sur le plateau.
- Nombre de téléportations que vous pouvez placer sur le plateau.
- Score de base.
- Nombre de points gagnés par souris sorties.
- Nombre de points perdus par souris dévorées.
- Vitesse des chats.
- Vitesse des souris.
- Délai entre chaque souris.
- Pseudo du joueur qui a fait le meilleur score.
- Score du joueur.
Menus | High Scores | Configuration | Jeu en cours.
Sujet (pdf) [274 Ko]
Documentation_v1.3 (pdf) [1.2 Mo]
v 1.1 :
Améliorations de l'affichage des composants GUI.
v1.2 :
Gestion de la molette de la souris permettant de sélectionner l'action courante.
Gestion des raccourcis clavier et de leur configuration.
v1.3 : version courante
Ajout du mode niveau unique.
Amélioration de l'intelligence du chat : il ne revient pas en arrière et il essaie de manger une
souris si celle ci se trouve juste à côté de lui au lieu d'aller dans une direction au
hasard.
v1.4 :
Gestion du multi-langage.
( java.util.Locale & java.util.ResourceBundle )
v 1.5 :
Editeur de niveau : Ajouter | Modifier | Supprimer un niveau.
v 1.6 :
Utiliser le XML pour le stockage des niveaux.
Deux types d'analyseurs :
DOM (Document Object Model) lit un document XML dans une structure arborescente.
SAX (Simple API for XML) génère des événements en lisant le document XML.
(org.w3c.dom & org.xml.* & javax.xml.* )
v 1.7 :
Gestion des skins.
Amélioration de la qualité des images du jeu.
v 1.8 :
Création d'un certain nombre de niveaux..
Le jeu v1.3 (zip) [216 Ko]
Le code source, les docs et le jeu v1.3 (tar.gz) [1.6 Mo]
Code source de l'archive : (cliquable)
data :
About.html, config.cfg, HighScores.dat, Level01.map, Level02.map, ...., Rules.html
Package Core :
Animal.java,
Cat.java,
Configuration.java,
Level.java,
ManageGame.java,
MapEngine.java,
MapFilter.java,
MnC.java,
Mouse.java,
Scores.java,
StartGame.java
Package Entities :
Blocker.java,
Direction.java,
East.java,
Entity.java,
In.java,
Nil.java,
North.java,
Out.java,
Protection.java,
South.java,
Teleportation.java,
Wall.java,
West.java
Package Events :
MapListener.java
Package Gui :
ChooseLevel.java,
DisplayAbout.java,
DisplayActions.java,
DisplayGame.java,
DisplayInfos.java,
DisplayPreferences.java,
DisplayRules.java,
DisplayScores.java,
MiceNCats.java,
Presentation.java