530 likes | 1.68k Views
IUP2 GMI 2004/2005. Jeudi, 14 Avril 2005 Valenciennes. Projet Tuteuré Jeu d’Awalé. Tuteur: Colombe HERAULT. Cyrille JOSSELIN. Sommaire. 1. Sujet du projet. 2. Programme en Java. 3. Diagramme de classe. 4. Description en UML. 5. Conclusion. I/ Sujet du projet. Règles de l’Awalé.
E N D
IUP2 GMI 2004/2005 Jeudi, 14 Avril 2005 Valenciennes Projet Tuteuré Jeu d’Awalé Tuteur: Colombe HERAULT Cyrille JOSSELIN
Sommaire 1. Sujet du projet 2. Programme en Java 3. Diagramme de classe 4. Description en UML 5. Conclusion
I/ Sujet du projet Règles de l’Awalé But du jeu : S’emparer d’un maximum de billes Le joueur qui a le plus de graines à la fin de la partie l'emporte Le terrain de jeu est divisé en deux territoires de 6 trous chacun (4 graines par trou). Chaque joueur joue à son tour. Le joueur va prendre l'ensemble des graines présentes dans l'un des trous de son territoire et les distribuer, une par trou. Si la dernière graine semée tombe dans un trou de l'adversaire comportant déjà 1 ou 2 graines, le joueur capture les 2 ou 3 graines résultantes. Les graines capturées sont sorties du jeu. Lorsqu'un joueur s'empare de deux ou trois graines, si la case précédente contient également deux ou trois graines, elle sont capturées aussi, et ainsi de suite.
Étapes du projet - Construire un jeu d’Awalé en Java. • Le développer pour créer différents • mode de jeu sans modifier la base. - Élaborer une documentation UML • Si possible, créer une interface graphique, • et plusieurs modes de jeu (en réseau ou contre l’ordinateur)
II/ Application - Démarrage de l’application (Interface graphique du jeu)
- Partie entre deux joueurs en cours (C’est au joueur 2 de jouer !)
- Fenêtre DOS (Détaille les actions)
CanvasPlateau FrameAwale III/ Classes L,H,score_final : int trous1,trous2 : int[] gagnant : String partie,termine : Bool type : int 0-1 FrameAwale() initComponents() actionPerformed() lit(joueur:int,case:int) affiche_score(sc1:int,sc2:int) aff_joueur(num:int) fin(gagnant:String,score:int) CanvasPlateau() init() paint() MouseClicked() ajout_billes() recup_tab() fin() 1 Construit 1 Joue 1 Lecture() test_joue() attendre() 1 1 2 Utilise Comporte Possède 1 Plateau (interface) JoueurPhysique JoueurArtificiel en_cours : Joue lancement() suivant() cmp_joueur(j:Joueur) : Bool modif_score(nb:int) aff_score() rejoue() fin() lecture(joueur:int,case:int):Bool ajout(joueur:int,case:int,billes:int) JoueurPhysique() lecture() test_joue() attendre() JoueurArtificiel() lecture() test_joue() attendre() Connecte 6 (hérite) Joueur nom : String score : int cases[ ] : Trou trous_possibles : Vector adversaire : Joueur nb_cases : int = 6 Trou 1 0-1 Crée num:int billes,billesTest : int = 4 precedent : Trou suivant : Trou Client 1 Serveur joueur,trou : int fin : Bool Joueur() joue(trou:int) liste_trous():Bool ramasse_tout() gagner() valide_trou(T:Trou):Bool reste_billes():Bool Trou() ramasse() deplace() deplace(nb:int,depart:Trou) test_valide() valide():Bool test_jouable(depart:Trou,nb:int):Bool fin,joue : Bool Client() connexion() deconnexion() joue() reception() run() Serveur() ouvrir() emission() fermer() run()
IV/ UML Tant qu’il reste des billes à distribuer on passe au trou suivant Cas d’utilisation (use case) La case ne doit pas être vide et doit appartenir au joueur Local contre local Joue un trou <<extends>> Saisie sur dessin <<include>> Joueur 1 Joueur 2 Déplace billes Si le trou contient 2 ou 3 billes on les ajoute au score et on retourne au trou précédent sinon on change de joueur <<include>> Test nb billes <<extend>> <<extend>> Modif score Affiche score <<include>> Joueur suivant
Tant qu’il reste des billes à distribuer on passe au trou suivant La case ne doit pas être vide et doit appartenir au joueur (selection du trou en fonction du type de joueur) Local contre Ordinateur Joue un trou <<extend>> <<extend>> Ordinateur Saisie dessin (Joueur 1) Calcul trou (Joueur 2) Joueur 2 <<include>> Joueur 1 Si le trou contient 2 ou 3 billes on les ajoute au score et on retourne au trou précédent sinon on change de joueur Déplace billes <<include>> Test nb billes <<extend>> <<extend>> Modif score Joueur suivant <<include>> <<include>> Affiche score
Diagramme de séquence (Création de la partie) Joueur Physique Utilisateur 1 FrameAwale Plateau Trou Démarrer (c: ComboBox) Crée une instance {c<3} Création Crée 6 instances Crée une instance {c=0|2} 2 joueurs Joueur Artificiel {c=3} Rejoint reseau {c=1} VS PC Crée 6 instances Crée une instance Client {c=2} Création reseau Instancie Serveur Start Crée une instance Start
Diagramme de séquence (local contre ordinateur) Joueur Physique Joueur Artificiel Utilisateur 1 CanvasPlateau FrameAwale Plateau Trou a 1:choix d’un joueur 6a: {saisie fausse} rejoue b 3a:MouseCliked 2a:attend nombre (trou) 2b:lecture(joueur,case) 4a:lit nombre 5a:lecture(joueur,case) 6b: {saisie valide} vide le trou 6b/6b1: {reste billes} Trou suivant 6b/6b2: {Plus de billes} affiche score 7: affichage du score
IV/ Conclusion -Intérêts du projet * Découvrir le jeu d’Awalé * Élaboration d’un projet avec UML * Besoin d’une rigeur de programmation * Développement en Java • Acquis • * Connaissances de le méthode UML (use case, diagramme de séquence) • * Java, Java2D, Sockets • * Gagner à l’Awalé ! • A améliorer • * Intelligence artificielle • * Interface plus agréable En vous remerciant...