10/04/2008 EPSI CHICKEN FOX SNAKE - PROJET UNIX Christian Couder, Fabien Joubert, Guy-Ludovic Rodriguez
Sommaire I Cahier des Charges a. Planification du projet... 4 b. Choix de l outil de développement... 5 c. Environnement de l activité... 5 Tableau détaillé de l environnement... 5 d. Compétences mises en œuvre... 5 Tableau détaillé des compétences mises en œuvre... 5 e. Méthodologie d analyse... 6 f. Aperçu de l interface graphique du client :... 7 2
I. Cahier des charges Notre équipe informatique (COUDER Christian, JOUBERT Fabien, RODRIGUEZ Guy-Ludovic) spécialisée dans le développement d applications a accepté de faire l étude et la réalisation d un logiciel nommé «Chicken Fox Snake» qui doit être un jeu vidéo en réseau. Nous souhaitons réaliser un jeu vidéo qui suit les règles du fameux jeu : «Poule Renard Vipère». L interface du jeu sera modélisée par un tableau à 2 dimensions avec un graphisme très simple, 3 types de joueurs peuvent être représentés : les poules les renards les serpents But du jeu: Manger sa proie sans se faire manger par son prédateur, sachant qu'un renard mange une poule, qu'une poule mange un serpent, mais qu'un serpent mange un renard. Règles du jeu : Chaque joueur a donc une proie et un prédateur dans le jeu. Cette règle sera respecté un peu comme dans le jeu «pacman» : si une proie et un prédateur se retrouve à un point à un même instant, alors le prédateur mange la proie. Chaque joueur contrôlera donc une entité (poule, renard, ou serpent) au travers de commandes clavier pour se déplacer dans le tableau (flèche haut, flèche bas, flèche droite, flèche gauche). Options facultatives : On espère y ajouter des murs pour rendre le jeu plus sympa et faire ainsi comme si on été dans un labyrinthe. 3
II. Analyse du projet a. Planification du projet Planification Semaines Détail des tâches 1 à 2 3 à 4 5 à 6 Fin Réflexion sur le choix des outils(kdevelop, QT3, doxygene) Appréhension du sujet Fonctionnement de l application (Client/serveur) Elaboration du modèle de classes (UML 2.0) Elaboration de l interface graphique du client (QT3) Développement du client / serveur Mise en place de la phase de test et des jeux d essais Rédactions documents Préparation soutenance Fin du projet Soutenance Démonstration du projet 4
b. Choix de l outil de développement Il est important de choisir un langage qui se prête au sujet. Afin de respecter au mieux le cahier des charges qui nous a été fourni, nous décidons d utiliser un langage objet qui nous permettrait d optimiser les capacités du logiciel. Pour ce projet, nous avons choisi d utiliser le C++ comme langage objet pour réaliser l application Client /Serveur avec les contraintes qui sont d appliquer les fonctions vues en cours (communication réseau, gestion de fichiers, programme multiprocessus multi-thread, communication /synchronisation entre-processus). C est pour cela que nous avons choisi l IDE «kdevelop» qui va nous permettre de gérer le projet. c. Environnement de l activité Tableau détaillé de l environnement Matériel Des ordinateurs de type : Pentium IV 2,4Ghz, 1024 Mo de RAM Logiciel * Utilisation de NET BEAN avec module UML pour mettre en place les classes, et pour faire apparaître toutes nos données et méthodes. * Utilisation de l IDE Kdevelop pour le développement de l activité. * Système d exploitation UBUNTU (Vitalisation avec VMware). * Documentation généré avec Doxygene. d. Compétences mises en œuvre Tableau détaillé des compétences mises en œuvre Principales Autres Développer une application à l aide d un langage de programmation à objets, utiliser, intégrer et produire des composants logiciels réutilisables. Développer l application à l aide d un langage de programmation procédurale. Représenter schématiquement les données d un système d informations. Echange et gestions des flux entre les clients et le serveur. Rédiger un rapport sur le projet ainsi qu une documentation complète des sources du logiciel. 5
e. Méthodologie d analyse Afin de modéliser l application, nous avons décidé d'appliquer la méthode UML, avec ses outils de représentation, de part sa diffusion très large, et de son adaptation à une application orientée objet. Le diagramme n étant pas encore complet car nous sommes en train de réfléchir sur la modélisation : Diagramme de classe de CFS 6
f. Echange des flux : Voici les échanges de flux entre le client et le serveur : Serveur 1 SOCKET() BIND() LISTEN() 1 ACCEPT() While(1) { CLIENT 1 Accept() SOCKET() } CONNECT() 2 WRITE() 3 THREAD1 THREAD2 READ() CLIENT 2 4 READ() WRITE() READ() WRITE() While( ) { read() } SOCKET() CONNECT() WRITE() READ() Ce schéma explique les échanges de flux entre le client et le serveur ainsi que les threads utilisés par le serveur pour gérer les clients. On remarque aussi que les threads peuvent communiquer entre eux. 7
En ce qui concerne l application il faudra gérer les connexions (au nombre de 3 car il faut 3 clients dans une partie). Une fois les 3 joueurs connectés sur le serveur. Le serveur enverra les positions des 3 joueurs sur le plateau de jeux (broadcaste). Toutes les 2 ms le serveur enregistrera les actions des clients, a partir de ces nouvelles informations le serveur renverra les nouvelles positions des joueurs jusqu à ce que qu un joueur soit sur la même case d un autre joueur. Là le jeu s arrête. Le serveur enregistre les scores. CLIENT 1 CLIENT 2 CLIENT 3 Ca Commence? Ca Commence? Ca Commence? SERVEUR Si COMPTEUR = 3 ALORS La partie commence : CLIENT 1 SERVEUR CLIENT 2 CLIENT 3 CLIENT 1 CLIENT 2 Position Poule : X1,Y1 Position Renard : X2,Y2 Position Vipère : X3,Y3 Action : Fleche haut Action : Fleche droite Toutes les 2 m/s le serveur enregistre la dernière action du client SERVEUR CLIENT 3 Action : Fleche droite 8
g. Aperçu de l interface graphique du client : 9