général
curriculum vitae
contact

CARDIWEB
2007
2006
2005

Etudes
les projets
les sites web
les exposés

liens
OTB World
EPITA
PCN
CARDIWEB

 

Modalités de rendu
==================

 Groupe de News:		epita.comp.java et epita.cours.modelisation
 Sujet de mail Yaka	[JAVA][GENERAL]
 Date de rendu:		jeudi 17 Juillet 2003 - 20:42:00
 Nom de l'exécutable:	general.jar
 Nom de la tarball:	login-general.tar.bz2
 Rendu:			Par Upload (cf Infos->Modalités->Rendus du
 			site yaka)
 Modalités:		Ce projet est à faire par groupe de 4
 Compilateur:           	j2sdk de NetBSD 1.3, fournit sur le compte des
 			yakas.
 Tools:			Tout ce qui sera nécessaire, sous réserve
 			d'acceptation des yakas. Des news apporteront
 			des éléments de réponse.
 Version du sujet:	1.05


 Les informations ci-dessus peuvent changer jusqu'au 20/06/2003 20h42.

 Introduction
 ============

 Bonjour jeune officier. Bienvenue au quartier général de CHUDA. En ce
 l'an 2040, de l’âge fantaisiste, notre situation est critique.

 Notre simulateur de stratégie a été détruit par des hackers. Nous
 avons besoin de vous : promotion 2005, afin de nous recoder notre
 système de simulation de défense au plus vite.

 Il ne nous reste pas beaucoup de temps avant une attaque ennemie,
 alors bonne chance et faites de votre mieux.

 Sujet
 =====

 Ce projet a pour but d'éprouver vos connaissances Java,
 algorithmiques, ainsi que votre capacité à utiliser votre matière
 grise dans le contexte d'un jeu de strategie sur plateau.

 En effet, nous vous demandons de placer les armées au mieux pour le
 premier tour d'attaque, et uniquement ce premier tour. Car rappelons
 le, la guerre se déroulera au tour par tour. Pour calculer votre
 placement, vous connaîtrez :

 	* la provenance de l'attaque,
 	* le nombre et le type d'armée que vous possédez.
 	* Et enfin la carte (et oui ça aide...)

 A partir de ces données, vous devrez attendre l'attaque de l'armée
 adverse. Sans satellite, c'est difficile de surveiller une
 progression :). ON vous demande de tenir. L'armée arrivera quelques
 tours après. Si vous tenez, la victoire sera notre. Vous n'aurez donc
 que les garnisons des objectif à défendre et bien sur votre grand
 sens de stratège. A partir su stage 3, vous aurez droit aux tours de
 préparation à la guerre.  Grâce à l'excellence de nos services
 secrets vous disposerez de quelques tours pour préparer et emmener
 vos unités vers les points stratégiques aisément défendables et
 permettant d'infliger un maximum de dégâts. Même s'il en va de la vie
 de l'unité, vous devez tenir !

 Afin de tester vos aptitudes professionnelles, cet exercice
 nécessitera un travail en équipe organisée, dont un rendu
 intermédiaire du suivi du projet permettra de déterminer si votre
 simulateur a été développé dans de bonnes conditions. La gestion du
 projet est à votre entière charge et décision. Toutefois, si nous ne
 possédons pas des documents tel qu'un diagramme de classe (et ce
 n'est pas suffisant mais nécessaire), votre notation en sera très
 fortement ressentie (proche de 0). Vous devrez expliciter la
 construction et la mise en oeuvre de votre programme, le choix des
 algorithmes, leur implémentation, etc...

 rendu intermédiaire
 ------------------

 Date:	Le mardi 1 Juillet à 20h42

 Ces documents devront être uploadés sur le site yaka via une tarball
 comprenant:

 - AUTHORS !! CHANGEMENT - Cela respecte la CSS de P1
 * login		(Prénom Nom	)

 - doc/ Répertoire contenant vos documents (format pdf ou doc) de
  gestion de projet.

 Un rendu papier devra aussi être effectué au labo YAKA pour la même date.

 Exécution du Programme
 ======================

 Votre programme sera appelé de la manière suivante :

 acide@alpha>java -jar general.jar carte.xml param.xml -sXX -tYY -dZZ -rKK

 Ou :
 	* XX est le niveau de calcul demandé.
 	* YY est le nombre de tours de préparation avant l'attaque
 	  (stage >= 3)
 	* ZZ est la provenance de l'armée ennemie (NN => nord,
 	  NE => nord est, EE ==> est, SE => sud est, SS => sud,
 	  SW => sud ouest, WW => ouest, NW => nord west
	* KK est le ratio représentant la force de votre ennemie par
	  rapport à la votre

 Si le niveau correspond au stage 1,alors XX devient 01.

 D'où la commande :

 acide@alpha>java -jar general.jar carte.xml -s01 -dWW -r01

 Si aucun paramètre de niveau n’est spécifié le plus haut de votre
 simulateur sera pris en compte.  Le paramètre de direction devra
 toujours être fourni.


 Le format de la carte XML
 =========================

 Celui-ci est donné à titre d'exemple. Pensez à faire les vôtres !!

< ?xml version="1.0" encoding="ISO-8859-1"?>

 => Des exemples de carte ne tarderont pas à être inclus dans cette
 section.

 La DTD
 ======

 general.dtd : Il s'agit de celle que vous devez utiliser.

<!ELEMENT generalMap (hexa+)>
<!ELEMENT hexa EMPTY>
<!ATTLIST hexa
level (mountain|water|forest|plain) "plain"
height ID #REQUIRED
width ID #REQUIRED
target (YES|NO) "NO"
army (YES|NO) "NO"
>

 target : point stratégique à défendre.
 army : (stage >= 3) arméé initialement à cet endroit.

 Modificateur (tableau 1)
 ------------------------

                 Cout
               Mouvement      Defenseur

 plaine             1

 foret              2             +1

 montagne           4             +2

 mer           impossible     pas combat



 Le format de army.txt
 ======================

 Voici un exemple du fichier paramètre de votre armée. Chaque section
 décrit le nombre dont vous en disposez, sa capacité de mouvement, sa
 puissance de résistance/feu et sa portée d’attaque. Lors d'un combat
 (je vous rappelle que vous ne devez pas les gérer) si la puissance de
 feu de l'attaquant est supérieur à celle du défenseur, alors c'est la
 mort du défenseur. Il n'y a donc pas de hasard.


 [CAVALRY]
 cavalryMove=4
 cavalryPower=3
 cavalryRange=1

 [SwordMan]
 SwordManMove=1
 SwordManPower=2
 SwordManRange=1

 [Angel]
 AngelMove=5
 AngelPower=1
 AngelRange=1

 [DATA]
 AngelNumber=6
 SwordManNumber=10
 CavalryNumber=5


 Vous l'aurez deviné les anges ont la capacité de s'affranchir des
 obstacles de terrain (stage >= 3).

 Stage
 ======

 Généralités :

 * Aucune attaque ne peut provenir de la mer, d'un lac, etc. excepté
   si c'est un ange qui attaque
 * Pour chaque niveau, les stages antérieurs s’appliquent.
 * Le temps de calcul maximal est de 30 secondes.

 * On ne passe au stage suivant que si le précédent est totalement
   terminé.

 * Il faut défendre le mieux possible un ou des objectifs (cf
   description de la carte)

 * Il est interdit d'empiler plusieurs armées sur le même hexagone.

 Stage 1 :	Newbie
 =========

 Le but de ce niveau est de réussir à placer selon la direction
 d'attaque les armées, en s'affranchissant des valeurs de terrain
 (toutes les cartes ne sont que des plaines), et vous ne disposerez
 que de l'infanterie. L'ennemie vous attaquera aussi qu'avec de
 l'infanterie.

 Vous ne devez défendre qu'un seul objectif.

 Enfin vous pouvez placer vos unités en 1 seul tour, sans contraintes
 de déplacement (considérez vos armées comme parachutables
 instantanément sur la carte).

 Stage 2 :	Rookie
 =========

 Même chose, sauf que les contraintes de terrain rentrent en
 compte. Vous pouvez toujours "parachuter" vos armées, mais vous devez
 utiliser le terrain comme avantage naturel.

 Vous disposerez de cavalerie et d'infanterie tout comme votre
 ennemie. Les modificateur de déplacement et de combat entre en
 compte. (cf: tableau 1 ci-dessus)

 Stage 3 :	Aspirant
 =========

 Ce niveau commence à prendre en compte mes tours de préparation avant
 la bataille.

 Vos armées partent des objectifs à défendre, relativement plus
 logique, puisqu'il s'agit de garnison de défense. Il faut recalculer
 les meilleurs postes et positions de défense atteignables en fonction
 du nombre de tours autorisés.

 L'adversaire placera ces unités après les votres.

 Stage 4 :	Captain
 =========

 Vos objectifs de défense sont multiples. Vu votre rang, le choix de
 la répartition initiale des armées vous appartient.

 Les anges entrent en compte comme éléments possibles de votre armée
 et celle de votre adversaire.

 Stage 5 :	Lieutenant
 =========

 Une infanterie se stabilisant plus de 2 tours au même endroit gagne +2
 en puissance, car elle a le temps d’étudier au mieux le terrain pour se
 défendre.

 Une infanterie stabilisée plus de 3 tours sur une montagne, créé un
 poste de défense lui donnant une portée d'attaque de maximale 3
 hexagones autour de l'infanterie. Car l'infanterie a le temps
 d’installer l’artillerie.

 Stage 6 :	Commandant
 =========

 * Dans les plaines, une cavalerie gagne 1 point puissance contre
   l’infanterie, mais perd 1 point de puissance contre les anges.

 * Les espions vous donnent le placement des unités adverses
   (modifications de la DTD), et vous devez infliger un maximum de
   dégâts les premiers tours de contact avec l’armée adverse. Cela va
   nécessiter de calculer des déplacements possibles de l’armée
   adverse dans les premiers tours jusqu’au contact, et de vérifier
   que leurs déplacements ne tombent pas sur votre unité ==> attaque
   en X déplacements au lieu de X + 1.

 La dtd sera écrite ici ultérieurement

 Stage 7 :	Général
 =========

 Vous devez offrir plusieurs solutions possibles et percutantes, afin
 de prévoir plusieurs plans de bataille. Car les services secrets ne
 sont pas toujours très exacts...

 ==> Un affichage graphique par plan de bataille est requis.

 Stage 8 :	Arès
 =========

 Tout ce à quoi nous n'avons pas pensé et que vous aurez fait.

 Sortie numérique du programme
 =============================

 Un affichage graphique est demandé. Cet affichage est réalisable en
 C/C++ ou Java, et doit montrer le placement des armées pour les
 stages < 3, et leur progression lors de l’appui sur la touche entrée,
 ainsi que les déplacements antérieurs lors de l’appui sur la touche
 backspace. La touche echap fermant l’affichage graphique.

 Dans le cas d’un affichage réalisé en C/C++, il est demandé de ne pas
 faire un appel à un binaire externe à l’aide de Java mais de
 l’intégrer au projet à l’aide de JNI.  Le projet devra être
 compilable à l’école sur les NetBSD, et fournir les sources dans la
 tarball de rendu.

 Pas d’affichage graphique implique 0 à la partie code.

 Note divers
 ===========

 * On ne peut pas capitaliser des points de déplacement. A la fin d'un
   tour, les point de déplacement sont mis à 0, pour tout le monde.
 * Chaque emplacement de la carte a une représentation hexagonale,
   qu'il conviendra de préserver tant au niveau traitement que
   graphique.


 La tarball de rendu
 ===================

 La tarball de rendu devra contenir obligatoirement les fichiers
 suivants et sous cette forme:

 - AUTHORS !! CHANGEMENT - Cela respecte la CSS de P1
 * login		(Prénom Nom	)

 - LINKS
  Contient :
 "http://mon.site.web.interressant/
 Titre Auteur
 (Attention ne mettez pas de # dans les différentes descriptions)

 - README
 Les fonctionnalités du logiciel, algo, etc..

 - TODO
  Contient La liste des choses qu'il reste à faire (ce n'est pas
  forcément vide...)

 - Makefile Contient :
   - une règle "doc" qui permet de créer les docs via javadoc et les
     range dans le répertoire doc/;
   - une règle "jar" qui compile les sources et créé le jar;
   - une règle "run" qui permet de lancer le programme
   - une règle "clean" qui permet de faire ce que l'on attend elle.
   - une règle "test" qui permet de lancer vos tests de développement.

 - STAGE
 Contiendra juste un nombre avec un retour à la ligne indiquant le
 niveau le plus élevé que vous avez programmé.


 Elle devra également contenir les répertoires suivants:

 - src/
  Répertoire contenant vos sources.

 - classes/
  Répertoire de génération des classes.

 - doc/
  Répertoire contenant vos documents de projet générés via javadoc.

 - uml/
  Répertoire contenant votre modélisation

 La tarball de rendu doit être nettoyée (i-e le sous-répertoire javadoc
 vide, documentation supplémentaire à faire, aucun fichier class et pas
 d'archive jar).





 

 
 
     

| Copyright 2002 © OTB World Conception |
.:: version du site : v2.0 ::.