Mini-Projet « aïe, Kan dit ! »
==============================
Au cas où vous ne le connaîtriez pas, il existe dans tout
ordinateur un petit être filiforme nommé Kan. Malgré toutes
les moqueries de certains utilisateurs, le mépris des
administrateurs, les tortures des développeurs, Kan survit
malgré tout, et même aujourd'hui n'importe quel informaticien
le connaît : c'est Kan qui combat dans l'arène de TRON, qui se
gave tellement qu'il en grandit dans Nibbles, qui tente de
remplir les labyrinthes de XLock et XScreenSaver, qui fait le
manège dans les barres de progression, bref, il est partout.
Aujourd'hui, votre mission, si vous l'acceptez, sera de lui
faire passer un sale quart d'heure.
Pour cela, vous devrez construire plusieurs outils de torture
et les utiliser sur Kan, en _montrant_ autant que possible à
quel point vous réussissez.
Fonctionnement général :
------------------------
Vous enfermez Kan dans un parc avec 4 outils de torture.
Kan se déplace en tentant d'éviter les obstacles.
L'utilisateur apprenti-bourreau contrôle les outils de
torture, en les plaçant de manière à coincer Kan.
Lorsque Kan ne peut plus avancer, il crie « aïe ! » et la
torture se termine.
L'apprenti-bourreau dispose d'une durée limitée pour coincer
Kan. Plus il met de temps à agir sur Kan, plus son score
diminue.
Si Kan est libre au bout de cette durée limitée, le bourreau a
échoué, et la torture se termine.
Voici quelles sont les règles du jeu :
--------------------------------------
- Kan ne doit pas paraître beau.
Pour cela, le jeu doit se dérouler dans un terminal.
- Kan est stupide.
Kan se dirige en ligne droite et avance devant lui en permanence, en
changeant de direction quand il rencontre un obstacle.
- Kan grandit en permanence, comme dans TRON.
- Kan ne doit pas pouvoir s'enfuir.
Pour cela, vous devez l'enfermer dans un parc solidement délimité
par des barrières : votre jeu doit être encadré.
Par ailleurs, le cadre ne doit pas être dégradé par les utilisateurs
compatissants : on ne doit pas constater de dégradation du cadre en
cas de redimensionnement du terminal ou de suspension du programme.
- Il ne doit pas y avoir plus de 4 outils de torture à la fois dans le
parc.
- L'apprenti-bourreau doit pouvoir contrôler la torture.
Pour cela, vous devez autoriser l'utilisateur du programme à le
contrôler. Les touches de contrôle sont :
* Les touches F1-F4, ou 1-4 si les touches de fonction ne sont pas
disponibles, pour sélectionner l'outil de torture.
* Les touches fléchées, ou 'h', 'j', 'k' et 'l' si les touches
fléchées ne sont pas disponibles, pour diriger les outils de
torture.
* La touche d'échappement pour arrêter la torture quand le bourreau
se lasse.
- La durée maximum (en secondes) est donnée en premier argument du
programme sur la ligne de commande.
Indications complémentaires
---------------------------
Kan considère comme « libre » toute zone du terminal où il n'y a
rien d'affiché.
Lorsque Kan doit changer de direction, vous pouvez lui faire choisir
de tout le temps tourner du même coté, ou changer de côté au
hasard. À vous de choisir. Néanmoins, Kan doit toujours avancer s'il
y a une zone libre proche de sa « tête ».
Un « outil de torture » est un objet opaque (une forme), représentée
sur le terminal. L'objet de torture le plus simple est le segment
rigide (une barrière), horizontale ou verticale, d'une longueur
quelconque. À vous d'expérimenter quelles formes vous conviennent
le mieux.
Dans la mesure ou tout obstacle bloque Kan, vous pouvez considérer
le bord du parc et la queue de Kan comme des outils de torture
secondaires.
Le déplacement des outils de torture doit découper, ou « effacer »
la queue de Kan.
Le but du « jeu » est donc d'enfermer la « tête » de Kan dans une
zone du terminal qu'il remplira en grandissant dans le temps limite
imposé.
Lorsque le « jeu » se termine, le terminal doit être entièrement
effacé et le résultat (score) doit être affiché au _centre_ du
terminal, en attendant que l'utilisateur valide pour terminer le
programme.
Bonii possibles
---------------
- Changement de couleur de Kan au cours du temps (maladie)
- Paramétrage des formes des outils de torture (à vous de choisir
comment)
- « blocage » des outils de torture contre le « bord » du terminal
- Effets visuels variés.
Modalités
---------
Vous avez droit à toutes les fonctions de la bibliothèque standard
déjà présentées, plus les terminfos.
Vous ne devez pas utiliser les Curses.
Votre exécutable doit s'appeler "eyecandy".
Votre répertoire de sources ne doit être accessible que par vous.
Vous rendrez votre mini-projet pour le 27 novembre à 08:00, en
utilisant le script de rendu des ACUs:
~acu/mbin/rendu.sh mp eyecandy
Le newsgroup destiné à ce mini-projet est epita.cours.c-unix.mini-projs
Évaluation
----------
Vous serez évalués sur au moins les critères suivants :
- connaissance du cours
- le respect des règles données dans le sujet
* robustesse de votre programme vis-à-vis des signaux
de redimensionnement et suspension
* adaptation de votre « environnement » selon la taille
du terminal
* bonne détection du « blocage » de la tête de Kan
- la bonne utilisation des terminfos
* robustesse de votre programme vis-à-vis des terminaux
sous-équipés en « capabilities »
* fonctionnement correct sur terminaux de types différents
- la bonne gestion de l'entrée utilisateur
* robustesse de votre programme vis-à-vis des entrées
rapides et (relativement) lentes
* bonne utilisation des arguments en ligne de commande
* robustesse vis-à-vis des redirections
Les aspects subjectifs (beauté du programme à l'exécution) seront
notés séparément à plus petit coefficient.
|