28
Jeu de dames 3D en réseau Bertolino Marina, Desmeurs David, Elbeze Léa, Jankee Christopher, Shum Cheuk-Fung

en réseau Jeu de dames 3D

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: en réseau Jeu de dames 3D

Jeu de dames 3Den réseau

Bertolino Marina, Desmeurs David, Elbeze Léa, Jankee Christopher, Shum Cheuk-Fung

Page 2: en réseau Jeu de dames 3D

Sommaire

● Introduction○ Fonctionnalités et règles du jeu de dames

● Organisation du projet○ Tickets & Jalons○ Conception du wiki

● Présentation des modules○ Interface graphique○ Traitement du jeu○ Communication réseau○ Stockage des données○ Coordination de l'ensemble (travail de groupe)

● Conclusion

Page 3: en réseau Jeu de dames 3D

Introduction - Fonctionnalité● Fonctionnalités du jeu de dames

○ Interface graphique 3D et 2D

■ Création d'une partie 2D et 3D

○ Architecture clients/serveur

■ Permettre la communication entre un serveur et des clients

○ Base de données et fichiers

■ Création d'une base de données et des requêtes associées

■ Traitement du les fichiers des sauvegardes des joueurs et de leurs parties

○ Traitement du jeu

■ Traiter les mouvements des pièces, la triche, et création d'une intelligence artificielle.

Page 4: en réseau Jeu de dames 3D

Introduction - Règles du jeu de dames● Damier de 10 cases par 10 cases● 20 pions (noirs et blancs) par joueur● Un pion devient dame s'il arrive à la dernière rangée● Le pion se déplace en avant, en diagonal et d'une seule

case● Le pion prend en faisant un simple saut de tout les côtés● La dame se déplace en diagonal de tout les côtés et de

plusieurs cases● La dame prend en faisant éventuellement de grands

sauts● Si une prise ou plusieurs sont possibles, alors elles

doivent être jouées● Triche: Supprimer des pièces, Jouer 2 fois, etc...

(possible seulement si l'autre joueur la valide)

Page 5: en réseau Jeu de dames 3D

Organisation du projet

● Affectation des modules○ Selon les compétences de chacun

● Affectation des tickets○ Selon les besoins les plus importants du projet

● Outils utilisés○ Mise en commun du code

■ SVN, Redmine, Wiki○ Utilisation des outils proposés

■ Eclipse, outils pour les tests unitaires (JUnit)

Page 6: en réseau Jeu de dames 3D

Tickets & Jalons

● Organisation des tickets○ Tickets fonctionnalité, anomalie ou assistance

■ [Module] [General] Description■ [Module] Description■ [Test_Module] Description

○ Ticket de réunion■ Une tout les jeudis + d'autres complémentaires■ Fixer les orientations

● 3 Jalons○ Version 0 Noyau: Fonctionnalités de base○ Version 1 Alpha: Application exploitable○ Version 2 Beta: Ajout de fonctionnalités optionnelles

Page 7: en réseau Jeu de dames 3D

Conception du wiki● Par rubriques:

○ Idées de conception○ Fonctionnalités

■ Générales■ Attendues par Jalon

○ Comptes rendus des réunions○ Disposition des tables de la base de données○ Répartition des tâches○ Règles de structuration du code & utilisation du SVN○ Protocole réseau○ Explications pour l'installation de librairies○ UML

■ Mise en place des packages■ Diagramme de classes

Page 8: en réseau Jeu de dames 3D

UML: Diagramme de classes

Page 9: en réseau Jeu de dames 3D

Présentation des modules

Page 10: en réseau Jeu de dames 3D

Interface graphique● Technologie utilisée :

○ Java3D pour le développement ○ Blender + Photoshop pour le design○ UISpec4J pour les tests unitaires

● Résultat : un jeu sympathique et original

+ =

Ce qu'on a :

Un panel de chargement

Connexion en local ou en réseau

Un salon avec un chat

Le jeu en 3D avec des petits lapins et des sons

+ Quelques éléments comme un menu pause et une fenêtre d'aide

Page 11: en réseau Jeu de dames 3D

Au niveau du code

5 packages :● test view : Les tests unitaires● view : Package principal● view 2D : La partie 2D● view3D : La partie 3D● view_utilitaire : Pour des classe telles que le chargement des

images

La classe TheWindows : Classe mère

● TheWindows représente la fenêtre principale, au centre de la partie graphique● TheWindows est utilisée pour la bijection avec les autres classes ainsi si la classe

X a besoin de la class Y on passe par l'intermédiaire de TheWindows○ exemple : dans la classe GameAction (class ecouteur des actionsdu jeu 3D)

● TheWindows a un objet CoordinateGame et InfoJoueur qui sont utilisés pour coordonner le jeu et les informations sur le joueur.

● CoordinateGame va appeler TheWindows pour modifier le jeu

Page 12: en réseau Jeu de dames 3D

Tests unitaires sur l'interface graphique : JTestView● Bon déroulement des actions utilisateur sur l'interface● Vérification de la présence des éléments● Passage d'un panel à un autre● Tests possibles grâce au plugin: UISpec4J ( http://www.uispec4j.org/ )

Un damier

Il est composé de cases.Chaque cases possède :

● Un sol pouvant s'illuminer● Des pions (sur le schéma si-dessus)

○ Epsillon signifit qu'il n'y a pas de pion (donc rien ne s'affiche)○ Une carrote signifie un pion mort○ Un pion blanc○ Une dame blanche○ Un pion noir○ Une dame noire

Page 13: en réseau Jeu de dames 3D

Android ● Par rapport à l'application version PC, il fallait ajouter:

○ Une interface graphique en 2D○ Une gestion différente des fichiers

L'interface graphique ● Fonctionnement avec des activités propre à Android.● Passage d'une activité à l'autre en utilisant les classes CoordinateGame et

InfoJoueur● 2 classes pour les Activités : BDEJSActivity et GameActivity● BDEJSActivity représente le démarrage du jeu avec le choix du pseudo

puis le choix de la partie. Quand on rentre dans une partie on passe à la classe GameActivity

● GameActivity représente le jeu même avec un damier, des pions, le menu pour la triche et celui de pause

Page 14: en réseau Jeu de dames 3D

Traitement du jeu - Mouvements

● Selon un damier donné:○ Vérifier si un mouvement est possible○ Vérifier si un mouvement est valide○ Obtenir la liste des rafles obligatoires

■ Exemple: Le pion à la position 5, H doit aller à la position 7, F puis à la position 5, D et ensuite à la position 3, F en ayant mangé 3 pièces en tout.

○ Jouer un mouvement■ Eventuellement, à la suite indiquer si un pion est devenu une dame

Page 15: en réseau Jeu de dames 3D

Traitement du jeu - Jeu, Triche & Fin

● Le joueur joue avec la classe Play○ Méthode qui exécute un tour, vérifie les sélections

de pièces/cases du joueur et exécute son action● La triche

○ Une classe de triche permet au joueur de supprimer des pièces, d'inverser les pièces du damier, jouer 2 fois, etc...

● Fin de partie○ Une classe gère les fins de partie: Egalité, victoire

d'un des joueurs ou si la partie continue ● Les tests

○ Faits selon un damier donné impliquant la victoire ou la défaite d'un joueur ou encore une égalité

Page 16: en réseau Jeu de dames 3D

Traitement du jeu - IA

● Alpha Beta○ L'intelligence artificielle utilise l'algorithme alpha

beta associé à une méthode d'évaluation selon un damier et un joueur

● Besoin de tout les mouvements○ Une méthode permet, selon un damier donné, de

récupérer toutes les possibilités suivantes● Tests unitaires

○ Ils ont été fait à partir de situations simples où l'AI doit éviter de se faire prendre une pièce, ou au contraire doit jouer un bon coup pour plus tard prendre une pièce

Page 17: en réseau Jeu de dames 3D

Traitement du jeu - Tests

● Tests unitairesIls sont souvent fait grâce à la classe LoadCheckerboard qui permet d'initialiser un damier. Par exemple:

● Tests avec une interface graphique primitive

Page 18: en réseau Jeu de dames 3D

Architecture Réseau

● Choix d'une architecture client/serveur, ce choix permet aux utilisateurs d'installer un serveur en Lan accueillant un certain nombre d'utilisateurs.

Page 19: en réseau Jeu de dames 3D

Communication réseau

● Serveur○ Classe Sclient, Serveur, SdriverServer○ Ecoute les clients

Gestion des clients

○ Démarrage et Arrêt du serveur

● Client○ NetworkClient, client, SdriverClient○ Implémentation des mots clés généraux (QUIT, CONNET, TRAY,

PING, PONG, ...) du portocole.○ Appel de la méthode de traitement des requêtes clients avec un objet

de la classe CoordinateClient qui elle même utilise des méthodes de SdriverClient

Page 20: en réseau Jeu de dames 3D

Gestion du ping

Page 21: en réseau Jeu de dames 3D

Communication réseau - Tests

● Problèmatique au niveau des tests du réseau○ Résolution avec de nombreux sleeps

● Test de la création de socket & destruction de socket○ s = new Socket(host, port);

● Test de tout les mots clés du protocole● Test du ping-pong

○ Par exemple au niveau serveur : nous démarons le serveur et plusieurs clients et nous envoyons un ping du serveur, le client doit répondre avec un pong, et vice versa.

Page 22: en réseau Jeu de dames 3D

● Classe de création des tables

Stockage des données

Page 23: en réseau Jeu de dames 3D

Stockage des données

● Classe de contrôle○ Connexion à la base○ Méthodes génériques dont addSlashes pour éviter

les injections SQL○ Déconnexion de la base de données○ Problèmes rencontrés mais résolution avec de

nombreuses recherches dans la documentation● Tests unitaires

○ Test de connexion à la base○ Test pour vérifier si la création fonctionne○ Test pour vérifier la destruction des tables et la

déconnexion

Page 24: en réseau Jeu de dames 3D

Stockage des données - Tables● Table Joueur

○ Créer un joueur, peut récupérer ses informations, les modifier ou encore récupérer tout les joueurs de la base

● Table Langue○ Crée une langue avec un mot clé et 5 valeurs associées

correspondant au français, à l'anglais, à l'italien, au chinois et à l'hébreu

● Table Partie○ Créer une partie (une fois terminée) avec notamment les joueurs qui

ont participé et le gagnant.

● Les scores, associés à la table Joueur○ Permet de récupérer le Top 10 (ou Top N) des scores des joueurs, ou

encore de le réinitialiser.

● Tests unitaires○ Création de requêtes et vérification si elle ont eu l'effet attendu dans la

base de données ou dans le résultat d'une requête une fois traité

Page 25: en réseau Jeu de dames 3D

Stockage des données - Fichiers

● Classe pour les fichiers des joueurs○ Ajouter un joueur avec son pseudo, etc...○ Savoir si un joueur existe○ Changer les scores d'un joueur

● Classe pour les fichiers des parties○ Une partie est associée à un joueur, exemple:

toto_12-12-12--11:30 est la partie de toto sauvegardée le 12/12/2012 à 11h30

○ Pouvoir modifier une sauvegarde en cours du jeu● Tests unitaires

○ Commun aux deux classes et de façon linéaire○ Création de fichiers de joueur puis de partie

associée et tests de leur présence ou autres

Page 26: en réseau Jeu de dames 3D

Coordination de l'ensemble● Travail de groupe

○ Traitement du jeu et interface graphique 3D■ Indiquer à l'interface graphique ce qui se passe (par exemple "Au

tour des blancs") et s'il y a des modifications sur le damier.■ L'interface graphique a simplement à indiquer où le joueur a cliqué

(une pièce, une case, ou un bouton de triche).○ Jeu et réseau

■ Elaboration d'un protocole: Le client envoit des requêtes que le serveur doit traiter, comme l'ajouter à la liste des joueurs connectés.

■ Le serveur peut envoyer requêtes, comme indiquer aux clients qui sont les joueurs connectés.

○ Coordination avec le stockage des données■ En réseau, le serveur peut faire exécuter des requêtes SQL

(ex: enregistrement d'un nouveau joueur) ■ En local, manipuler les joueurs et les parties sauvegardées du jeu.

Page 27: en réseau Jeu de dames 3D

Coordination de l'ensemble - Tests

● Coordination sur le jeu○ Simulation des coups des joueurs pour exécuter un morceau de partie

et voir si tout ce déroule correctement

● Coordination: protocol réseau○ Démarrage d'un serveur et de plusieurs clients○ Tests tels que:

■ Création d'une partie■ Suppression d'une partie■ Parler dans les chats, etc ...

○ Communication grâce au protocole réseau○ Exemple:

ca3.getTextFieldChatGame().setText("coucou"); // Message pour le chatca3.actions(ConstNetwork.CHAT_GAME); // Action client envoyant le message assertTrue(listChatGame.get(0)[2].equals("coucou"));

// Test si le message a été envoyé au serveur, traité, puis renvoyé AUX clients

Page 28: en réseau Jeu de dames 3D

Conclusion

Ce que nous a appris la conception de ce projet:○ La gestion d'outils pour le partage de code source○ Comment communiquer de façon efficace entre

développeurs (Redmine, répartition des tâches)○ L'importance des tests unitaires (JUnit)○ Selon les parties de chaque développeurs:

■ La conception d'une interface graphique en 3D avec l'utilisation de Blender et Photoshop

■ La mise en place d'un protocole réseau et l'utilisation des sockets en Java

■ Comment traiter une base de données en Java■ La fabrication d'une architecture logiciel

permettant la coordination des différentes parties