Jeu Risk Star Wars

Transcription

Jeu Risk Star Wars
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
Unbound
Value
Star Wars Risk
Première Soutenance
Table des matières
1 Aperçu du Projet
1.1 Présentation Générale du Jeu . . . . . . . . . . . . . . . . . .
1.2 Présentation du Travail Collectif . . . . . . . . . . . . . . . . .
2 Règles et Aspects du Jeu Visés
2.1
2.2
2.3
2.4
Menu du Jeu . . . . . . . . . . . . . .
Répartition et déplacement des Troupes
Phases de Combat . . . . . . . . . . . .
Fin de la Partie . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Constantes, Types et Enregistrements . . .
Procédure de Distribution Planétaire . . .
Fonction-Procédure d'Achage Planétaire
Procédure Génèse . . . . . . . . . . . . . .
Répartition des unités . . . . . . . . . . . .
Procédure de combat (en cours) . . . . . .
Finalité du Programme . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3 La Carte Galactique
3.1
3.2
3.3
3.4
Création . . . . . . . . . . . . .
Déplacement . . . . . . . . . . .
Achage des Calques et Sprites
Le Panneau de Contrôle . . . .
.
.
.
.
.
.
.
.
.
.
.
.
4 Les Premières Fonctions
4.1
4.2
4.3
4.4
4.5
4.6
4.7
.
.
.
.
3
3
3
4
4
5
6
6
7
7
9
9
9
11
11
12
13
13
16
16
18
5 Début de création de notre futur site
19
6 Découvertes des Diérent Logiciels Utilisés
20
6.1
6.2
6.3
6.4
6.5
Latex . . . . . . . . . . . . . . . . . . . . . . . . . . .
Easy PHP / PHP coder . . . . . . . . . . . . . . . .
Photoshop CS / Image Ready CS / Corel Painter IX
3DSMax . . . . . . . . . . . . . . . . . . . . . . . . .
Borland Delphi 7 . . . . . . . . . . . . . . . . . . . .
7 Conclusion et prévisions pour la 2e soutenance
EPITA
2
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
20
20
20
20
21
22
InfoSup B2
Unbound
Value
Star Wars Risk
Premiè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 de
société Risk en version Star Wars. Il comprend à première vue des règles
similaires au jeu de société version Seigneur des Anneaux. En bref, ce jeu
doit se dérouler sous forme de jeu de plateau. Le but du jeu est de conquérir
les diérents secteurs de la galaxie ou de remplir des missions données en
début de partie. La conquète des planétes se fait en lançant aléatoirement
des dés par exemple, et le résultat marquera la victoire ou la défaite du
joueur, suivant les règes de combat établies.
1.2
Présentation du Travail Collectif
Le groupe s'est scindé en deux sous-groupes an de pouvoir avancer plus
rapidement 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 rapidité d'exécution et par son ecacité, et inconvénients par la spécialisation
des deux sous-groupes dans certains domaines et non dans le tout : ainsi il
faut donc que chacun prenne connaissance des parties avec lesquelles il n'est
pas 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 programmation
du jeu en réalisant quelques fonctions principales de base.
Christopher s'est imprégné des diérents logiciels qu'il devra utiliser par la
suite, et a cherché du côté de l'implémentation et de l'initialisation de DirectX sous Delphi, par l'intermédiaire de DelphiX.
Enn, Thibaut a recréé une belle carte de la galaxie, ce qui nous servira
de support principal en arrière plan du jeu, et au niveau de certaines règles
indispensables.
Le reste fut mis au point en groupe, comme l'accord sur les règles, ou autres
réglages, et au niveau de l'organisation du groupe, régulièrement : tous les
mardi après-midis.
EPITA
3
InfoSup B2
Unbound
Value
Star Wars Risk
Première Soutenance
2 Règles et Aspects du Jeu Visés
Nous avons cherché à harmoniser nos points de vue sur les aspects graphiques 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 membres
du groupe et a été remanié en conséquence. Ce chier permet d'éviter de se
poser des questions inutiles et de pouvoir se concentrer sur les questions de
fond. Il permet également une progression plus rapide pour toute la partie
graphique de notre jeux.
2.1
Menu du Jeu
Après le lancement du jeu, le menu principal de commande du jeu s'achera. 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
- Retour
Mode 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)
- Retour
Options 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 nous
avons terminé le jeux pour deux joueurs.
EPITA
4
InfoSup B2
Unbound
Value
2.2
Star Wars Risk
Première Soutenance
Répartition et déplacement des Troupes
Optionellement, une cinématique s'enclenche lors du choix de l'onglet
conquète, puis laisse place au jeu. Le joueur peut alors se familiariser avec la
répartition aléatoire des diérentes planètes lui ayant été attribuées. Une fois
ceci eectué, il doit cliquer sur un bouton achant Nouvelles Aectations,
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 cadran 1, une zone comportant le nombre d'unités disponibles, un emplacement
modiable par le joueur an d'ajouter ou de soustraire le nombre d'unités
voulues au nombre d'unités disponibles (impossible de soustraire plus que
le nombre d'unités disponibles), un bouton de validation local, validant une
répartition du nombre souhaité d'unités, le transférant vers la planète souhaitée.
An de rendre la répartition possible, un seconde cadran du panneau de
contrôle doit être présent : celui d'une planète sélectionnée directement sur
la carte générale. Lors du transfert d'unités du cadran1 vers la planète, le
transfert ne s'eectuera 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 une
annulation du dernier transfert sera néanmoins possible optionellement. Le
joueur ne pourra plus répartir avant le prochain tour, lorsqu'il disposera de
nouveau de renforts. Lorsqu'il a ni la phase de répartition, le joueur laisse
alors 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 le
jeu, où les informations de répartition (cadran 1) sera remplacé par une autre
sé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 compteur
interne permettra de geler avant le tour suivant les unités ayant déjà eectué
un mouvement, et un autre permettra de garder au moins une unité sur la
planè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 : les
planètes qu'elle ne peut atteindre seront grisées, et celles qu'il peut atteindre
garderont leur teinte normale.
Par ailleurs, il est nécessaire de laisser un intervalle, voir une validation de
la part du joueur à chaque action de l'ordinateur, si il joue contre une IA.
EPITA
5
InfoSup B2
Unbound
Value
2.3
Star Wars Risk
Première Soutenance
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 toujours
rester sur la planète de départ, alors que les autres seront engagées dans
l'arène des combats. Au terme d'un combat de dés entre les deux eectifs en
présence, la planète cible changera ou non d'appartenance. De petites scènes
video seront peut-être ajoutées optionellement, et aléatoirement. Par ailleurs,
les phases de combat et de déplacement pourront s'entrelacer, car seule la
contrainte des unités gelées permettra de mettre un terme aux actions du
joueur, lorsqu'il n'aura plus de possibilités de déplacement. L'enchaînement
des phases se déroulera de la manière suivante : Déploiement des renforts al-
liés, Changement de Main, Déploiement des renforts adverses, Changement
de Main, Déplacement et Attaques alliées, Changement de Main, Déplacement et Attaques adverses.
2.4
Fin de la Partie
- En mode Conquète, la possession par un joueur de toutes les planètes
de la galaxie entraîne la n de la partie.
- En mode Campagne, l'accomplissement des objectifs spéciques attribués au joueur (humain ou IA), termine la partie.
EPITA
6
InfoSup B2
Unbound
Value
Star Wars Risk
Première Soutenance
3 La Carte Galactique
3.1
Création
Bienvenue dans l'univers mythique de Star Wars, alors que la célèbre carte
s'ache 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 Andromeda m31x), image de base de 2048 pixels sur 2077. En calques ont été rajoutés les planètes (dont la disposition est tirée des sources ocielles de lucaslm), les secteurs, dessinés arbitrairement an de les faire concorder à l'esprit
du jeu, quelques noms des régions les plus connues, les cinq grandes routes
commerciales et enn les liaisons entre les planètes. Ainsi, ces calques orent
l'énorme avantage de modier 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
Unbound
Value
Star Wars Risk
Première Soutenance
Voici une miniature de la carte
EPITA
8
InfoSup B2
Unbound
Value
3.2
Star Wars Risk
Première Soutenance
Déplacement
Le déplacement s'eectuera soit :
- En déplaçant le curseur sur les bords de l'écran
- En cliquant sur un point spécique de la mini-map située dans un des
coins du panneau de contrôle
- En utilisant un des raccourcis pour se cibler sur un secteur spécique
(optionel)
- Dans le panneau de contrôle gureront des liens xés par le joueur vers
les points clés de son empire (optionnel).
3.3
Achage des Calques et Sprites
Les planètes seront comprises dans le chier racine sous forme de sprite,
an d'être achées convenablement suivant les aléas du jeu. Lorsque par
exemple une unité sera sélectionnée par le joueur, seules les planètes accessibles par l'unité serotn achées dans leur forme normale, alors que les autres
seront grisées.
Les noms des planètes existeront sous plusieurs couleurs, pour l'instant rouge
pour l'Alliance Rebelle, et bleu pour l'Empire Galactique. Suivant l'appartenance de la planète, ils seront donc achés sous l'une ou l'autre couleur.
Les liaisons seront probablement intégrées au fond de carte, n'ayant pour
l'instant pas besoin d'être modiables dans le jeu. Ils resteront néanmoins
sous forme de calques tant que la carte et le système de jeu ne seront pas
dénitifs. Il en ira de même pour les limites de secteurs et les noms de régions
pour 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é dans
nos esprits. Celui-ci comprendra de nombreuses cases dynamiques non modiables directement par le joueur, et d'autres cases achant certains points
clés des sélections du joueur. Les cases non modiables serviront à l'achage
de données variables apportant certaines indications au joueur, comme le
nombre de planètes sous contrôle, ses eectifs... Sera comprise dans ce panneau de contrôle une mini carte représentant la totalité de la galaxie en taille
réduite, à partir de laquelle le joueur pourra se déplacer rapidement d'un
point à un autre, sans passer par la méthode de base à partir du curseur.
EPITA
9
InfoSup B2
Unbound
Value
Star Wars Risk
Première Soutenance
D'autre part, ce panneau de contrôle risque de masquer une partie des bords
de la carte, c'est à dire que le délement de la carte devrait se stopper une
fois un des bords atteints (le bas en particulier, où le principal du panneau
de contrôle sera certainement le plus conséquent) : ce bord de carte serait
alors masqué à l'écran par le panneau de contrôle, et il n'y aurait pas moyen
pour le joueur de le démasquer, étant arrivé au bord . . .An d'éviter ce genre
de problème domageable, de plus aggravé par le fait que certaines planètes
se situent assez prêt des bords de la carte, nous avons décidé d'encadrer la
carte par une bande noire ou de couleur adaptée et peu voyante, susamment large pour laisser une marge entre le panneau de contrôle et les bords
de carte.
EPITA
10
InfoSup B2
Unbound
Value
Star Wars Risk
Première Soutenance
4 Les Premières Fonctions
L'ébauche de jeu programmé jusqu'à maintenant fonctionne sous mode
console. Ainsi, les fonctions de base (exposées par la suite dans l'ordre d'implémentation sous Delphi 7) sont faciles à traiter, et à mettre en place, et
le travail en est restreint à l'implémentation du code même. De cette manière, le travail a pu être centré sur les diérentes fonctions de départ du
jeu sans prendre en compte une quelconque interface graphique inutile pour
le moment. Il faut préciser que ces fonctions sont créées indépendament des
fonctions d'initialisation graphique à partir de DirectX, qui, elles, permettront de lancer notre propre achage et de le lier par la suite aux autres
fonctions 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 savons pas encore si nous irons ne serait-ce jusqu'à trois joueurs, ni quelles
factions pourront incarner les troisième et quatrième joueurs (nous hésitons
encore entre le grand nombre de factions présentes dans l'histoire de Star
Wars).
Le nombre de liaisons par planète est xé à trois, car au delà, la carte devient 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 est
conséquente.
Un type enregistrement a été mis en place pour le moment, qui est le type
T-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 integer.
- La quatrième prend en compte un tableau des liaisons vers les planètes
voisines désignées. C'est cette variable que suivra la fonction de déplacement des unités, an de savoir vers quelle planètes elles peuvent être
EPITA
11
InfoSup B2
Unbound
Value
Star Wars Risk
Première Soutenance
transférées.
- La cinquième annonce soit le nom du joueur, de type string, ou le
numé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 première et cinquième variables ont été utilisées.
Un tableau regroupant les soixante planètes a également été prévu pour la
suite (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. Elle
se lance donc dès le début d'une partie, et associe chaque planète à un joueur
spcécique. Elle compte le nombre de joueurs, puis passe au joueur 1, lui associe 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. Cette
procé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
Unbound
Value
Star Wars Risk
Premiè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'Achage Planétaire
Cette fonction ache les planètes appartenant au joueur juste après la
répartition. Elle boucle les planètes et regarde à quel joueur elles appartiennent, une par une, et les ache le cas échéant. Elle propose ensuite par
une 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 planètes et leur associe une place dans le tableau de planètes (T-tab). Ainsi, elle
passe la main à la fonction de distribution.
Procedure init();
var
Planete : T_tplanete;
i: Byte;
begin
Writeln('');
EPITA
//variable qui contient toutes les infos
//variable de boucle
13
InfoSup B2
Unbound
Value
Star Wars Risk
Premiè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
Unbound
Value
Star Wars Risk
Premiè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
Unbound
Value
4.5
Star Wars Risk
Première Soutenance
Répartition des unités
Cette procédure sera nécessaire pour la partie renfort. Elle nous indique
le nombre de troupes disponible, puis passe en revue chaque planète en demandant 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éacher, et l'on ne
peut mettre plus d'unités que ce qui nous est permis. Pour le moment, on
ne peut revenir sur une planète que nous avons déjà visitée et on ne peut
choisir la planète désirée : elle nous est obligatoirement desservie. Elle sera
donc 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 eet de randomisation, ce qui remplacera les dés dans le jeu de plateau.
EPITA
16
InfoSup B2
Unbound
Value
Star Wars Risk
Premiè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
Unbound
Value
Star Wars Risk
Première Soutenance
end;
end;
end;
4.7
Finalité du Programme
Ce petit programme nous a donc permis une approche relative du problème, mais néanmoins signicative. Bien que cette application soit extrêmement limitée, elle nous a permi de poser de solides bases et d'avoir un très
net aperçu de ce qui servira de ciment à toute l'implémentation découlant de
ces fonctions de base. Ce programme peut s'approcher de la future procédure
qui initialisera le début d'une partie de jeu.
EPITA
18
InfoSup B2
Unbound
Value
Star Wars Risk
Première Soutenance
5 Début de création de notre futur site
Notre site futur comportera dierents aspects, une dite "Tous publics",
l'autre "Interne au groupe".
La partie interne au groupe permettra de récapituler chaque semaine ce qu'il
y a à faire et les problèmes à régler. On pourra aussi s'envoyer des informations entre nous grâce à un systeme de messagerie. Un rapport des tâches
permettra de revoir les résumés de nos réunions. Enn, une partie rapport de
débugage, très utilisé sur la n du projet, permettra de noter tous les bugs
repérés et leur résolution.
Dans la partie publics, on retrouvera les news qui donneront toutes les informations sur l'avancement du projet. Deux autres parties, intitulées "présentation du groupe" et "présentation du projet", permettront de mieux nous
connaître. Et enn nous mettrons nos chiers et nos liens en ligne pour aider
les suivants.
Pour le moment, seule la première page et l'envoi de message sont résolus
sur la partie "Privé" du site, mais il devrait bien avancer pour la deuxième
soutenance.
EPITA
19
InfoSup B2
Unbound
Value
Star Wars Risk
Première Soutenance
6 Découvertes des Diérent Logiciels Utilisés
6.1
Latex
Oui, en eet, il fallait obligatoirement en passer par LaTex, même si ce
n'est pas une surprise. Comme le cahier des charges tapé précédemment sous
LaTex, le rapport de soutenance l'est aussi, avec maintenant la maîtrise des
entêtes et des pieds-de-page pour appuyer un peu plus le côté LaTex (Il était
temps !). Paraissant rébarbatif au départ, on s'aperçoit que suer un peu plus
pour découvrir de nouvelles fonctionnalités an de rendre le document plus
beau 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ée
MYSQL. Ce qui sert surtout pour tester tous les scripts php en local. On
utilise un logiciel d'edition de texte pour modier les pages PHP : PHP coder
qui a la particularité de colorer le code PHP. Le language PHP permet de
dynamiser le site, et par la meme occasion simplier les mises à jour.
6.3
Photoshop CS / Image Ready CS / Corel Painter
IX
Connaissant déjà le fonctionnement de Photoshop CS, et surtout, ayant
acquit 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 a
assemblé 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, la
carte peut maintenant se vanter d'être quasiment sous son état nal, son
meilleur jour. Il était en eet indispensable de terminer une carte propre
pour la suite de l'expérience, sans quoi l'implémentation et le développement
du jeu s'en seraint grandement ressentis. Il était nécessaire de pouvoir xer
les liaisons inter-planètes, d'avoir une carte propre et nette pour son envergure, 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 monter
le design des modèles d'unités présents dans le jeu, ceci demandait le recourt
EPITA
20
InfoSup B2
Unbound
Value
Star Wars Risk
Première Soutenance
à Direct 3D, et nous avons préféré simplier 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 programmation, parfait pour Delphi et très puissant dans son domaine. Assez
simple à prendre en main, ce n'est pas tant le logiciel qui gêne, mais souvent
le code. La principale diculté provient donc plus du pascal que de delphi 7
lui-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 de
gros espoirs dans ces séances de TD, car sans elles nous ne pourrons avancer
plus loin. . .
EPITA
21
InfoSup B2
Unbound
Value
Star Wars Risk
Première Soutenance
7 Conclusion et prévisions pour la 2e soutenance
La diculté majeure avant cette première soutenance a été de résoudre
des problèmes d'organisation, de méthodes et de travail. Ce projet nous a
placés devant des besoins très spéciques au jeu que nous n'avions encore
jamais rencontrés et auxquels nous avons dû nous adapter. Nous avons tous
évidemment fait des TPE en Terminale, un travail de longue haleine, mais
il 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 un
travail régulier, car on pouvait être confrontés à des problèmes que seul le
temps pouvait résoudre. Bien que la fréquence de nos réunions restent très
régulières, on ne peut encore armer que le travail suit le même rythme. On
peut cependant espérer que la période entre la première et la deuxième soutenance 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éation de la carte et du site intranet, l'implémentation de quelques fonctions
de base, les premiers achages DirectX, une dénition précise de l'ensemble
des règles concernant le jeu et la création de quelques sprites d'unités sous
3DSMax.
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 fonctions principales, écriture du code concernant les congurations (chargement
et enregistrement XML) et la partie Joueur du jeu, l'achage graphique et
la gestion des périphériques.
EPITA
22
InfoSup B2

Documents pareils