Risk Star Wars
Antoine BELIN (belin_a)Christopher TAUPIN (taupin_c)
Patrice DE SAINT STEBAN (de-sai_p)Thibault ROBIN (robin_t)
le 19 novembre 2004
1
UnboundValue
Star Wars RiskPremière Soutenance
Table des matières
1 Aperçu du Projet 31.1 Présentation Générale du Jeu . . . . . . . . . . . . . . . . . . 31.2 Présentation du Travail Collectif . . . . . . . . . . . . . . . . . 3
2 Règles et Aspects du Jeu Visés 42.1 Menu du Jeu . . . . . . . . . . . . . . . . . . . . . . . . . . . 42.2 Répartition et déplacement des Troupes . . . . . . . . . . . . . 52.3 Phases de Combat . . . . . . . . . . . . . . . . . . . . . . . . . 62.4 Fin de la Partie . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3 La Carte Galactique 73.1 Création . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73.2 Déplacement . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93.3 A�chage des Calques et Sprites . . . . . . . . . . . . . . . . . 93.4 Le Panneau de Contrôle . . . . . . . . . . . . . . . . . . . . . 9
4 Les Premières Fonctions 114.1 Constantes, Types et Enregistrements . . . . . . . . . . . . . . 114.2 Procédure de Distribution Planétaire . . . . . . . . . . . . . . 124.3 Fonction-Procédure d'A�chage Planétaire . . . . . . . . . . . 134.4 Procédure Génèse . . . . . . . . . . . . . . . . . . . . . . . . . 134.5 Répartition des unités . . . . . . . . . . . . . . . . . . . . . . . 164.6 Procédure de combat (en cours) . . . . . . . . . . . . . . . . . 164.7 Finalité du Programme . . . . . . . . . . . . . . . . . . . . . . 18
5 Début de création de notre futur site 19
6 Découvertes des Di�érent Logiciels Utilisés 206.1 Latex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206.2 Easy PHP / PHP coder . . . . . . . . . . . . . . . . . . . . . 206.3 Photoshop CS / Image Ready CS / Corel Painter IX . . . . . 206.4 3DSMax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206.5 Borland Delphi 7 . . . . . . . . . . . . . . . . . . . . . . . . . 21
7 Conclusion et prévisions pour la 2e soutenance 22
EPITA 2 InfoSup B2
UnboundValue
Star Wars RiskPremière Soutenance
1 Aperçu du Projet
1.1 Présentation Générale du Jeu
Le jeu en cours de développement est une adaptation du célèbre jeu desociété Risk en version Star Wars. Il comprend à première vue des règlessimilaires au jeu de société version Seigneur des Anneaux. En bref, ce jeudoit se dérouler sous forme de jeu de plateau. Le but du jeu est de conquérirles di�érents secteurs de la galaxie ou de remplir des missions données endébut de partie. La conquète des planétes se fait en lançant aléatoirementdes dés par exemple, et le résultat marquera la victoire ou la défaite dujoueur, suivant les règes de combat établies.
1.2 Présentation du Travail Collectif
Le groupe s'est scindé en deux sous-groupes a�n de pouvoir avancer plusrapidement sur les principaux points de travail. Cela présente des avantages,mais aussi des inconvénients qu'il nous a fallu maîtriser. Avantages par la ra-pidité d'exécution et par son e�cacité, et inconvénients par la spécialisationdes deux sous-groupes dans certains domaines et non dans le tout : ainsi ilfaut donc que chacun prenne connaissance des parties avec lesquelles il n'estpas familier, et sur lesquelles il n'a pas travaillé.
Durant la période précédent la première soutenance, Antoine a réalisé un�chier LaTeX sur les visées du jeu, explicitant la forme et les aspects clés.
Patrice, qui a avancé plus rapidement que les autres membres du groupe,a mis en place une ébauche de site et a avancé sur la partie programmationdu jeu en réalisant quelques fonctions principales de base.
Christopher s'est imprégné des di�érents logiciels qu'il devra utiliser par lasuite, et a cherché du côté de l'implémentation et de l'initialisation de Di-rectX sous Delphi, par l'intermédiaire de DelphiX.
En�n, Thibaut a recréé une belle carte de la galaxie, ce qui nous servirade support principal en arrière plan du jeu, et au niveau de certaines règlesindispensables.
Le reste fut mis au point en groupe, comme l'accord sur les règles, ou autresréglages, et au niveau de l'organisation du groupe, régulièrement : tous lesmardi après-midis.
EPITA 3 InfoSup B2
UnboundValue
Star Wars RiskPremière Soutenance
2 Règles et Aspects du Jeu Visés
Nous avons cherché à harmoniser nos points de vue sur les aspects gra-phiques du jeu. Pour ce faire nous avons décidé de mettre au point un autre�chier en format LaTeX. Antoine a rédigé ce �chier sur lequel il a exprimésa propre vision du jeux. Puis ce �chier a été révisé par les autres membresdu groupe et a été remanié en conséquence. Ce �chier permet d'éviter de seposer des questions inutiles et de pouvoir se concentrer sur les questions defond. Il permet également une progression plus rapide pour toute la partiegraphique de notre jeux.
2.1 Menu du Jeu
Après le lancement du jeu, le menu principal de commande du jeu s'a�-chera. Il comportera di�érents onglets, à savoir :
Mode Solo :- Conquète de la Galaxie- Rejoindre l'Alliance Rebelle- Rejoindre l'Empire Galactique
- Campagne- Rejoindre l'Alliance Rebelle- Rejoindre l'Empire Galactique
- RetourMode Multijoueurs :
- Machine Unique- Rejoindre l'Alliance Rebelle (grisé si déjà choisi)- Rejoindre l'Empire Galactique (grisé si déjà choisi)
- Protocole TCP-IP- Rejoindre l'Alliance Rebelle (grisé si déjà choisi)- Rejoindre l'Empire Galactique (grisé si déjà choisi)
- RetourOptions Quitter le Jeu
Deux joueurs seulement ont été prévus lors de la rédaction de ce �chier.Néanmoins, la création d'autres joueurs pourrait se faire rapidement si nousavons terminé le jeux pour deux joueurs.
EPITA 4 InfoSup B2
UnboundValue
Star Wars RiskPremière Soutenance
2.2 Répartition et déplacement des Troupes
Optionellement, une cinématique s'enclenche lors du choix de l'ongletconquète, puis laisse place au jeu. Le joueur peut alors se familiariser avec larépartition aléatoire des di�érentes planètes lui ayant été attribuées. Une foisceci e�ectué, il doit cliquer sur un bouton a�chant Nouvelles A�ectations,et le jeu lui donne alors l'obligation de placer le nombre de troupes �xées luiétant attribué. Il apparaît alors dans ce que l'on appellera par la suite le ca-dran 1, une zone comportant le nombre d'unités disponibles, un emplacementmodi�able par le joueur a�n d'ajouter ou de soustraire le nombre d'unitésvoulues au nombre d'unités disponibles (impossible de soustraire plus quele nombre d'unités disponibles), un bouton de validation local, validant unerépartition du nombre souhaité d'unités, le transférant vers la planète sou-haitée.
A�n de rendre la répartition possible, un seconde cadran du panneau decontrôle doit être présent : celui d'une planète sélectionnée directement surla carte générale. Lors du transfert d'unités du cadran1 vers la planète, letransfert ne s'e�ectuera que dans un seul sens (cadran 1 vers cadran 2), pouréviter les téléportations de troupes de la planète vers la répartition, mais uneannulation du dernier transfert sera néanmoins possible optionellement. Lejoueur ne pourra plus répartir avant le prochain tour, lorsqu'il disposera denouveau de renforts. Lorsqu'il a �ni la phase de répartition, le joueur laissealors la main à son adversaire. Une fois tous les renforts sans exceptions ré-parties, la phase se termine et le jeu passe à la phase suivante.
Un système similaire sera instauré pour les transferts d'unités pendant lejeu, où les informations de répartition (cadran 1) sera remplacé par une autresérie d'informations (les informations de la planète) dans le même cadran :les transferts se feront alors dans les deux sens. Cependant, un compteurinterne permettra de geler avant le tour suivant les unités ayant déjà e�ectuéun mouvement, et un autre permettra de garder au moins une unité sur laplanète de départ. A chaque nouveau tour, les unités seront dégelées.
Il en va de même pour les planètes lorsqu'une unité est sélectionnée : lesplanètes qu'elle ne peut atteindre seront grisées, et celles qu'il peut atteindregarderont leur teinte normale.
Par ailleurs, il est nécessaire de laisser un intervalle, voir une validation dela part du joueur à chaque action de l'ordinateur, si il joue contre une IA.
EPITA 5 InfoSup B2
UnboundValue
Star Wars RiskPremière Soutenance
2.3 Phases de Combat
Le système de combat sera similaire à la répartition et au déplacement, àceci prêt qu'il visera une planète adverse. Au moins une unité devra toujoursrester sur la planète de départ, alors que les autres seront engagées dansl'arène des combats. Au terme d'un combat de dés entre les deux e�ectifs enprésence, la planète cible changera ou non d'appartenance. De petites scènesvideo seront peut-être ajoutées optionellement, et aléatoirement. Par ailleurs,les phases de combat et de déplacement pourront s'entrelacer, car seule lacontrainte des unités gelées permettra de mettre un terme aux actions dujoueur, lorsqu'il n'aura plus de possibilités de déplacement. L'enchaînementdes phases se déroulera de la manière suivante : Déploiement des renforts al-liés, Changement de Main, Déploiement des renforts adverses, Changementde Main, Déplacement et Attaques alliées, Changement de Main, Déplace-ment et Attaques adverses.
2.4 Fin de la Partie
- En mode Conquète, la possession par un joueur de toutes les planètesde la galaxie entraîne la �n de la partie.
- En mode Campagne, l'accomplissement des objectifs spéci�ques attri-bués au joueur (humain ou IA), termine la partie.
EPITA 6 InfoSup B2
UnboundValue
Star Wars RiskPremière Soutenance
3 La Carte Galactique
3.1 Création
Bienvenue dans l'univers mythique de Star Wars, alors que la célèbre cartes'a�che devant vous, accompagnée des planètes les plus célèbres de la galaxie.
La carte comprend une galaxie (pour information la galaxie voisine Andro-meda m31x), image de base de 2048 pixels sur 2077. En calques ont été rajou-tés les planètes (dont la disposition est tirée des sources o�cielles de lucas-�lm), les secteurs, dessinés arbitrairement a�n de les faire concorder à l'espritdu jeu, quelques noms des régions les plus connues, les cinq grandes routescommerciales et en�n les liaisons entre les planètes. Ainsi, ces calques o�rentl'énorme avantage de modi�er rapidement et sans détérioration l'image gé-nérale : ils peuvent être supprimés, retouchés, ou insérés à volonté.
EPITA 7 InfoSup B2
UnboundValue
Star Wars RiskPremière Soutenance
3.2 Déplacement
Le déplacement s'e�ectuera soit :- En déplaçant le curseur sur les bords de l'écran- En cliquant sur un point spéci�que de la mini-map située dans un descoins du panneau de contrôle
- En utilisant un des raccourcis pour se cibler sur un secteur spéci�que(optionel)
- Dans le panneau de contrôle �gureront des liens �xés par le joueur versles points clés de son empire (optionnel).
3.3 A�chage des Calques et Sprites
Les planètes seront comprises dans le �chier racine sous forme de sprite,a�n d'être a�chées convenablement suivant les aléas du jeu. Lorsque parexemple une unité sera sélectionnée par le joueur, seules les planètes acces-sibles par l'unité serotn a�chées dans leur forme normale, alors que les autresseront grisées.
Les noms des planètes existeront sous plusieurs couleurs, pour l'instant rougepour l'Alliance Rebelle, et bleu pour l'Empire Galactique. Suivant l'apparte-nance de la planète, ils seront donc a�chés sous l'une ou l'autre couleur.
Les liaisons seront probablement intégrées au fond de carte, n'ayant pourl'instant pas besoin d'être modi�ables dans le jeu. Ils resteront néanmoinssous forme de calques tant que la carte et le système de jeu ne seront pasdé�nitifs. Il en ira de même pour les limites de secteurs et les noms de régionspour le moment.
3.4 Le Panneau de Contrôle
Résultant des mises au points du groupe concernant les modalités de jeu,une ébauche du concept d'un panneau de contrôle dans le jeu a germé dansnos esprits. Celui-ci comprendra de nombreuses cases dynamiques non mo-di�ables directement par le joueur, et d'autres cases a�chant certains pointsclés des sélections du joueur. Les cases non modi�ables serviront à l'a�chagede données variables apportant certaines indications au joueur, comme lenombre de planètes sous contrôle, ses e�ectifs... Sera comprise dans ce pan-neau de contrôle une mini carte représentant la totalité de la galaxie en tailleréduite, à partir de laquelle le joueur pourra se déplacer rapidement d'unpoint à un autre, sans passer par la méthode de base à partir du curseur.
EPITA 9 InfoSup B2
UnboundValue
Star Wars RiskPremière Soutenance
D'autre part, ce panneau de contrôle risque de masquer une partie des bordsde la carte, c'est à dire que le dé�lement de la carte devrait se stopper unefois un des bords atteints (le bas en particulier, où le principal du panneaude contrôle sera certainement le plus conséquent) : ce bord de carte seraitalors masqué à l'écran par le panneau de contrôle, et il n'y aurait pas moyenpour le joueur de le démasquer, étant arrivé au bord . . .A�n d'éviter ce genrede problème domageable, de plus aggravé par le fait que certaines planètesse situent assez prêt des bords de la carte, nous avons décidé d'encadrer lacarte par une bande noire ou de couleur adaptée et peu voyante, su�sam-ment large pour laisser une marge entre le panneau de contrôle et les bordsde carte.
EPITA 10 InfoSup B2
UnboundValue
Star Wars RiskPremière Soutenance
4 Les Premières Fonctions
L'ébauche de jeu programmé jusqu'à maintenant fonctionne sous modeconsole. Ainsi, les fonctions de base (exposées par la suite dans l'ordre d'im-plémentation sous Delphi 7) sont faciles à traiter, et à mettre en place, etle travail en est restreint à l'implémentation du code même. De cette ma-nière, le travail a pu être centré sur les di�érentes fonctions de départ dujeu sans prendre en compte une quelconque interface graphique inutile pourle moment. Il faut préciser que ces fonctions sont créées indépendament desfonctions d'initialisation graphique à partir de DirectX, qui, elles, permet-tront de lancer notre propre a�chage et de le lier par la suite aux autresfonctions du jeu.
4.1 Constantes, Types et Enregistrements
Le nombre total de planètes sera �xé à 60 : 60 est divisible par 2, 3 et 4,entraînant la possibilité d'une répartition des planètes entre 2, 3 ou 4 joueurs,ce qui conduit le nombre de joueurs maximum à 4. En revanche, nous ne sa-vons pas encore si nous irons ne serait-ce jusqu'à trois joueurs, ni quellesfactions pourront incarner les troisième et quatrième joueurs (nous hésitonsencore entre le grand nombre de factions présentes dans l'histoire de StarWars).
Le nombre de liaisons par planète est �xé à trois, car au delà, la carte de-vient une véritable toile d'araignée, et en dessous, le jeu risque de se bloquer,notamment dans le noyau galactique, où la concentration de planètes estconséquente.
Un type enregistrement a été mis en place pour le moment, qui est le typeT-planete. De la sorte, chaque planète se voit associer plusieurs variables,soit plus précisément 6 :
- La première concerne le nom de la planète, de type string.- La seconde prend en compte l'abscisse de la planète sur la carte (utileà la sélection de la planète). Type integer.
- La troisième prend en compte l'ordonnée de la planète sur la carte(complément à l'abscisse, utile à la sélection de la planète). Type inte-ger.
- La quatrième prend en compte un tableau des liaisons vers les planètesvoisines désignées. C'est cette variable que suivra la fonction de dépla-cement des unités, a�n de savoir vers quelle planètes elles peuvent être
EPITA 11 InfoSup B2
UnboundValue
Star Wars RiskPremière Soutenance
transférées.- La cinquième annonce soit le nom du joueur, de type string, ou lenuméro du joueur, de type integer.
- La sixième variable annonce le nombre d'unités présentes sur la planète.
Pour l'instant, dans les fonctions codées jusqu'à maintenant, seules les pre-mière et cinquième variables ont été utilisées.
Un tableau regroupant les soixante planètes a également été prévu pour lasuite (Array of T-planete).
T_planete = record //type de donnée pour mettre toutes
nom : String; // les information sur les planete
x : Integer;
y : Integer;
liaisons : array[1..NB_LIAISONS] of Integer;
joueur : Byte;
unite : Byte;
end;
T_tplanete = array[1..NB_PLANETE] of T_planete;
4.2 Procédure de Distribution Planétaire
La procédure de distribution répartit les planètes entre les joueurs. Ellese lance donc dès le début d'une partie, et associe chaque planète à un joueurspcéci�que. Elle compte le nombre de joueurs, puis passe au joueur 1, lui as-socie une planète de manière aléatoire, puis passe au joueur 2, fait de même,et recommence jusqu'à ce qu'il ne reste plus de planète à associer. Cetteprocédure utilise deux boucles : l'une fait alterner les deux joueurs, l'autre,imbriquée, décompte les planètes attribuées.
Procedure joueur_init(var Planete: T_tplanete; joueur: Byte);
var
n: Byte;
i: Byte;
m: Byte;
p: Byte;
begin
Randomize();
p:= NB_PLANETE div joueur;
EPITA 12 InfoSup B2
UnboundValue
Star Wars RiskPremière Soutenance
for n:= 1 to joueur do //boucle sur les joueurs
for i:=1 to p do // cette boucle choisis a chaque boucle une planete
begin
repeat // boucle jusqu'a trouver une planete
m:= Random(NB_PLANETE)+1;
until Planete[m].joueur=0;
Planete[m].joueur:= n;
end;
end;
4.3 Fonction-Procédure d'A�chage Planétaire
Cette fonction a�che les planètes appartenant au joueur juste après larépartition. Elle boucle les planètes et regarde à quel joueur elles appar-tiennent, une par une, et les a�che le cas échéant. Elle propose ensuite parune procédure au joueur de sélectionner une des planètes lui appartenant.
Procedure IHM(var Planete: T_tplanete);
var
i: Byte;
begin
writeln('Repartition des planetes');
for i:= 1 to NB_PLANETE do
begin
writeln(i,') ',Planete[i].nom,'(Joueur ',Planete[i].joueur,')');
end;
end;
4.4 Procédure Génèse
Cette dernière procédure, qui est en fait la première à agir, crée les pla-nètes et leur associe une place dans le tableau de planètes (T-tab). Ainsi, ellepasse la main à la fonction de distribution.
Procedure init();
var
Planete : T_tplanete; //variable qui contient toutes les infos
i: Byte; //variable de boucle
begin
Writeln('');
EPITA 13 InfoSup B2
UnboundValue
Star Wars RiskPremière Soutenance
Writeln('');
writeln(' ------------------');
Writeln(' - Risk Star Wars -');
writeln(' ------------------');
Planete[1].nom := 'Coruscant'; //initialisation de toutes les
Planete[1].liaisons[1] := 2; //Planettes avec leurs liasons
Planete[1].liaisons[2] := 3;
Planete[1].liaisons[3] := 7;
Planete[1].liaisons[4] := 8;
Planete[2].nom := 'Tatoine';
Planete[2].liaisons[1] := 1;
Planete[2].liaisons[2] := 3;
Planete[2].liaisons[3] := 10;
Planete[2].liaisons[4] := 5;
Planete[3].nom := 'Endor';
Planete[3].liaisons[1] := 1;
Planete[3].liaisons[2] := 2;
Planete[3].liaisons[3] := 6;
Planete[3].liaisons[4] := 12;
Planete[4].nom := 'Bakura';
Planete[4].liaisons[1] := 9;
Planete[4].liaisons[2] := 11;
Planete[4].liaisons[3] := 5;
Planete[4].liaisons[4] := 2;
Planete[5].nom := 'Dagobah';
Planete[5].liaisons[1] := 3;
Planete[5].liaisons[2] := 2;
Planete[5].liaisons[3] := 8;
Planete[5].liaisons[4] := 6;
Planete[6].nom := 'Géonosis';
Planete[6].liaisons[1] := 3;
Planete[6].liaisons[2] := 5;
Planete[6].liaisons[3] := 9;
Planete[6].liaisons[4] := 11;
Planete[7].nom := 'Agamar';
Planete[7].liaisons[1] := 1;
Planete[7].liaisons[2] := 10;
Planete[7].liaisons[3] := 11;
Planete[7].liaisons[4] := 12;
Planete[8].nom := 'Yavin';
Planete[8].liaisons[1] := 1;
EPITA 14 InfoSup B2
UnboundValue
Star Wars RiskPremière Soutenance
Planete[8].liaisons[2] := 5;
Planete[8].liaisons[3] := 9;
Planete[8].liaisons[4] := 11;
Planete[9].nom := 'Naboo';
Planete[9].liaisons[1] := 4;
Planete[9].liaisons[2] := 6;
Planete[9].liaisons[3] := 8;
Planete[9].liaisons[4] := 10;
Planete[10].nom := 'Dathomir';
Planete[10].liaisons[1] := 2;
Planete[10].liaisons[2] := 7;
Planete[10].liaisons[3] := 9;
Planete[10].liaisons[4] := 12;
Planete[11].nom := 'Dantoine';
Planete[11].liaisons[1] := 4;
Planete[11].liaisons[2] := 6;
Planete[11].liaisons[3] := 7;
Planete[11].liaisons[4] := 8;
Planete[12].nom := 'Dath';
Planete[12].liaisons[1] := 3;
Planete[12].liaisons[2] := 7;
Planete[12].liaisons[3] := 10;
Planete[12].liaisons[4] := 0;
for i:= 0 to NB_PLANETE do
begin
Planete[i].joueur := 0;
Planete[i].unite := 1;
end;
joueur_init(Planete,NB_JOUEUR);
IHM(Planete);
readln;
Writeln('Répartition des troupes');
for i:=1 to NB_JOUEUR do
begin
writeln('Joueur ',i);
joueur_unite(Planete,10,i); //repartition inirtial des troupes
end;
main(Planete); //passe la main à la fonction main
end;
EPITA 15 InfoSup B2
UnboundValue
Star Wars RiskPremière Soutenance
4.5 Répartition des unités
Cette procédure sera nécessaire pour la partie renfort. Elle nous indiquele nombre de troupes disponible, puis passe en revue chaque planète en de-mandant au joueur combien d'unités il désire positionner sur cette planète.De plus, le nombre d'unités restante est à chaque fois réa�cher, et l'on nepeut mettre plus d'unités que ce qui nous est permis. Pour le moment, onne peut revenir sur une planète que nous avons déjà visitée et on ne peutchoisir la planète désirée : elle nous est obligatoirement desservie. Elle seradonc bien évidemment révisée pour les besoins du jeu.
Procedure joueur_unite(var Planete : T_tplanete; unite , joueur : Word);
var
i, num : Byte;
begin
writeln('-------------- Distribution des unite -------------');
for i:= 1 to NB_PLANETE do
begin
if (Planete[i].joueur = joueur) and (unite > 0) Then
begin
writeln('Il vous reste ', unite, ' unites a repartir.');
write(Planete[i].nom, ' :',Planete[i].unite,' unites + ');
readln(num);
if unite <= num then
begin
Planete[i].unite := Planete[i].unite + unite;
unite := 0;
end
else
begin
Planete[i].unite := Planete[i].unite + num;
unite := unite - num
end;
end;
end;
Writeln('Fin de la répartition');
end;
4.6 Procédure de combat (en cours)
Elle permet d'attaquer une planète adverse grâce à un e�et de randomi-sation, ce qui remplacera les dés dans le jeu de plateau.
EPITA 16 InfoSup B2
UnboundValue
Star Wars RiskPremière Soutenance
procedure joueur_comba(var Planete: T_tplanete; plan_att, plan_def: Byte);
var
de, unite_att, inute_def : Byte;
annul : Boolean;
begin
Randomize();
annul := True;
repeat
writeln('Joueur ', Planete[plan_att].joueur,
' : Combien d_unite voulait vous utilisé (1-',
Planete[plan_def].unite - 1, ') ?');
readln(unite_att);
until unite_att < Planete[plan_att].unite;
unite_def := Planete[plan_def].unite;
Planete[plan_att].unite := Planete[plan_att].unite - unite_att;
while annul AND (unite_att > 0) AND (unite_def > 0) do
begin
writeln('Attaque de la planete ', Planete[plan_def].nom);
de := Random(3);
if de = 0 Then
begin
unite_def := unite_def - 2;
writln('Joueur ', Planete[plan_def].joueur, ' pert 2 unite');
end;
else if de = 1 Then
begin
unite_att := unite_att - 2;
writln('Joueur ', Planete[plan_att].joueur, ' pert 2 unite');
end;
else
begin
unite_att := unite_att - 1;
unite_def := unite_def - 1;
writeln('Chacun joueur pert une unite');
end;
if unite_att=0 then
begin
writeln('Joueur ', Planete[plan_att].joueur, ' pert 2 a gagne !');
Planete[plan_def]
EPITA 17 InfoSup B2
UnboundValue
Star Wars RiskPremière Soutenance
end;
end;
end;
4.7 Finalité du Programme
Ce petit programme nous a donc permis une approche relative du pro-blème, mais néanmoins signi�cative. Bien que cette application soit extrême-ment limitée, elle nous a permi de poser de solides bases et d'avoir un trèsnet aperçu de ce qui servira de ciment à toute l'implémentation découlant deces fonctions de base. Ce programme peut s'approcher de la future procédurequi initialisera le début d'une partie de jeu.
EPITA 18 InfoSup B2
UnboundValue
Star Wars RiskPremière Soutenance
5 Début de création de notre futur site
Notre site futur comportera di�erents aspects, une dite "Tous publics",l'autre "Interne au groupe".La partie interne au groupe permettra de récapituler chaque semaine ce qu'ily a à faire et les problèmes à régler. On pourra aussi s'envoyer des informa-tions entre nous grâce à un systeme de messagerie. Un rapport des tâchespermettra de revoir les résumés de nos réunions. En�n, une partie rapport dedébugage, très utilisé sur la �n du projet, permettra de noter tous les bugsrepérés et leur résolution.Dans la partie publics, on retrouvera les news qui donneront toutes les infor-mations sur l'avancement du projet. Deux autres parties, intitulées "présen-tation du groupe" et "présentation du projet", permettront de mieux nousconnaître. Et en�n nous mettrons nos �chiers et nos liens en ligne pour aiderles suivants.Pour le moment, seule la première page et l'envoi de message sont résolussur la partie "Privé" du site, mais il devrait bien avancer pour la deuxièmesoutenance.
EPITA 19 InfoSup B2
UnboundValue
Star Wars RiskPremière Soutenance
6 Découvertes des Di�érent Logiciels Utilisés
6.1 Latex
Oui, en e�et, il fallait obligatoirement en passer par LaTex, même si cen'est pas une surprise. Comme le cahier des charges tapé précédemment sousLaTex, le rapport de soutenance l'est aussi, avec maintenant la maîtrise desentêtes et des pieds-de-page pour appuyer un peu plus le côté LaTex (Il étaittemps !). Paraissant rébarbatif au départ, on s'aperçoit que suer un peu pluspour découvrir de nouvelles fonctionnalités a�n de rendre le document plusbeau et présentable n'est pas dénué de �nalité, et au �nal de contentement.
6.2 Easy PHP / PHP coder
EasyPHP permet d'installer un serveur Web, PHP et une base de donnéeMYSQL. Ce qui sert surtout pour tester tous les scripts php en local. Onutilise un logiciel d'edition de texte pour modi�er les pages PHP : PHP coderqui a la particularité de colorer le code PHP. Le language PHP permet dedynamiser le site, et par la meme occasion simpli�er les mises à jour.
6.3 Photoshop CS / Image Ready CS / Corel Painter
IX
Connaissant déjà le fonctionnement de Photoshop CS, et surtout, ayantacquit quelque expérience dans son utilistion (car il est indéniable que l'expé-rience et l'imagination font le talent sur les logiciels d'imagerie !), Thibaut aassemblé tous les di�érents éléments de la carte, et façonné tous les calques.Quelques retouches grâce à Image Ready, mais surtout par Painter IX, lacarte peut maintenant se vanter d'être quasiment sous son état �nal, sonmeilleur jour. Il était en e�et indispensable de terminer une carte proprepour la suite de l'expérience, sans quoi l'implémentation et le développementdu jeu s'en seraint grandement ressentis. Il était nécessaire de pouvoir �xerles liaisons inter-planètes, d'avoir une carte propre et nette pour son enver-gure, et surtout car elle est située au coeur du jeu. Malgré son aspect de�nalité, elle constitue en réalité un socle indispensable pouvoir continuer.
6.4 3DSMax
Malgré notre intention initiale d'avoir recourt à ce logiciel pour monterle design des modèles d'unités présents dans le jeu, ceci demandait le recourt
EPITA 20 InfoSup B2
UnboundValue
Star Wars RiskPremière Soutenance
à Direct 3D, et nous avons préféré simpli�er notre tâche en nous limitant àl'utilisation de Direct Draw, beaucoup plus adapté à notre idée.
6.5 Borland Delphi 7
Il était indéniable que nous aurions à nous servir de ce logiciel de pro-grammation, parfait pour Delphi et très puissant dans son domaine. Assezsimple à prendre en main, ce n'est pas tant le logiciel qui gêne, mais souventle code. La principale di�culté provient donc plus du pascal que de delphi 7lui-même, qui semble gérer de façon optimale les implémentations fournies.Il nous reste donc à nous perfectionner avant tout en TD. Nous portons degros espoirs dans ces séances de TD, car sans elles nous ne pourrons avancerplus loin. . .
EPITA 21 InfoSup B2
UnboundValue
Star Wars RiskPremière Soutenance
7 Conclusion et prévisions pour la 2e soute-
nance
La di�culté majeure avant cette première soutenance a été de résoudredes problèmes d'organisation, de méthodes et de travail. Ce projet nous aplacés devant des besoins très spéci�ques au jeu que nous n'avions encorejamais rencontrés et auxquels nous avons dû nous adapter. Nous avons tousévidemment fait des TPE en Terminale, un travail de longue haleine, maisil nous était possible de donner des grands coups de travail pour avancerénormément. En revanche on a rapidemment vu que ce projet nécessitait untravail régulier, car on pouvait être confrontés à des problèmes que seul letemps pouvait résoudre. Bien que la fréquence de nos réunions restent trèsrégulières, on ne peut encore a�rmer que le travail suit le même rythme. Onpeut cependant espérer que la période entre la première et la deuxième soute-nance sera plus productive, malgré les partiels et le manque certain de temps.
Nous avons cependant déjà bien avancé sur certains points, tels que la créa-tion de la carte et du site intranet, l'implémentation de quelques fonctionsde base, les premiers a�chages DirectX, une dé�nition précise de l'ensembledes règles concernant le jeu et la création de quelques sprites d'unités sous3DSMax.
Les prévisions pour la deuxième soutenance sont les suivantes : création àpart entière du site privé ET publique, implémentation de toutes les fonc-tions principales, écriture du code concernant les con�gurations (chargementet enregistrement XML) et la partie Joueur du jeu, l'a�chage graphique etla gestion des périphériques.
EPITA 22 InfoSup B2