Rapport jeu en JAVA

un jeu d'avion développer par java (swing et applet) vous allez trouver le code source dans le lien gitHub. code source : https://github.com/ahmedwafdi/JeuAvion/tree/dev

Rapport Final de projet : JetPlane Game
,
,
sous la direction de monsieur
Année universitaire : 2016 - 2017
Master SEM
Table des matières
Introduction ............................................................................................................ 4
1. Définition du projet .......................................................................................................4
a. Énoncé........................................................................................................................4
b. Plan.............................................................................................................................4
c. Présentation générale.................................................................................................4
2. Cahier des charges.........................................................................................................5
Analyse et conception............................................................................................ 6
3. Analyse du travail réalisé ..............................................................................................6
4. Diagrammes UML.........................................................................................................6
a. Classes (Structure du projet).....................................................................................6
Réalisation............................................................................................................... 7
5. Outils et Langage...........................................................................................................7
a. Bibliothèques Graphiques..........................................................................................7
b. Gestion de versions ....................................................................................................8
c. Langage......................................................................................................................8
d. Plateforme de développement....................................................................................9
6. Exemple du code............................................................................................................9
a. Création d’une partie.................................................................................................9
b. Déplacement de l’avion............................................................................................14
c. Détection des collisions.............................................................................................15
d. L’explosion des ennemis ..........................................................................................16
e. Des ennemis vous suivent.........................................................................................16
7. Résultat Final...............................................................................................................17
Conclusion............................................................................................................. 23
8. Apport du projet..........................................................................................................23
a. Travail en groupe.....................................................................................................23
a. Outils manipulés ......................................................................................................23
Annexes ................................................................................................................. 24
Sitographie............................................................................................................ 25
Table des figures
Figure 1 packages du projet..................................................................................................6
Figure 2 un nouveau joueur................................................................................................10
Figure 3 sélection d'un joueur ............................................................................................10
Figure 4 affectation du nom de joueur au TextField (désactivé) ..................................10
Figure 5 Traitement du TextField .....................................................................................10
Figure 6 Chargement de la liste des joueurs ....................................................................11
Figure 7 Création du joueur et son partie ........................................................................11
Figure 8 Dispatching, Forwarding et Session ..................................................................12
Figure 9 create() et findAll() du couche service...............................................................13
Figure 10 La méthode keyPressed() ..................................................................................14
Figure 11 La méthode keyReleased() ...............................................................................14
Figure 12 Méthode whileAvionIsAlive() ...........................................................................15
Figure 13 Méthode checkCollision()..................................................................................16
Figure 14 Méthode destroy()...............................................................................................16
Figure 15 Méthode follow().................................................................................................16
Figure 16 Interface GameBoard ........................................................................................18
Figure 17 GameBoard avec des animations .....................................................................18
Figure 18 Niveau 1................................................................................................................19
Figure 19 Explosion de l'ennemie ......................................................................................19
Figure 20 Tir des projectiles par l'ennemie......................................................................20
Figure 21 Entrée du BossEnnemie.....................................................................................20
Figure 22 Explosion de l'ennemieBoss ..............................................................................21
Figure 23 GameOver............................................................................................................22
Figure 24 Score Final ...........................................................................................................22
Figure 25 Diagrammes de classes.......................................................................................24
Introduction
1. Définition du projet
a. Énoncé
Le projet dont nous sommes en charge consiste à réaliser un jeu en java. Ce jeu
sera simplifié par rapport aux règles du jeu normal, car il doit répondre aux contraintes du
sujet. En effet, le but de ce projet est de mettre en exergue les principes fondamentaux de
la programmation objet, c’est à dire l’héritage entre les classes, la gestion des interfaces,
le polymorphisme, les Threads, etc.
Pour bien répondre au problème, nous nous inspirerons du cycle général de la
conception objet que nous avons vu en cours. Cette méthode de conception nous permettra
d’avoir une présentation claire et structurée de notre projet.
b. Plan
Nous présentons dans ce document la démarche que nous avons suivi pour tenter
de mener à bien ce projet, en décrivant les deux grands axes de développement, c'est-à-
dire la conception et l'analyse du projet avec diagrammes UML à l'appui, la réalisation
technique (choix des outils, portions de code, modèle utilisé), notre avis sur les résultats
obtenus et les objectifs initiaux, puis une conclusion personnelle sur ce projet.
c. Présentation générale
Le jeu commence par une interface simple dans laquelle le joueur est invité à
créer son nom ou choisir son nom s’il est un ancien joueur. Après il choisit l’avion et le
niveau souhaité. Ensuite la partie commence, le joueur déplace l’avion à droite à gauche
an avant et en arrière pour éviter les ennemis et leurs missiles, le tir des missiles se fait
par la touche ‘espace’. Un tableau de score est placé en haut à droite qui affiche le score,
niveau, et le nombre des vies restantes, ces derniers sont aussi représentés sous forme
d’images en bas à gauche. Le niveau change en fonction du score atteint, si le score ≥
1000 le niveau passe de 1 à 2 et les ennemis s’augmente avec une vitesse plus élevée, et
ainsi de suite (niveau 3 score ≥ 2000 ...etc.) jusqu’au dernier niveau ou l’ennemi boss
apparu. D’une manière aléatoire une sorte d’aide apparue sous forme PowerUps qui peut
être soit tir des doubles missiles, triples missiles, protection contre les missiles et les
ennemis, ajout de vies.
2. Cahier des charges
Notre programme doit offrir ces fonctionnalités :
Gestion du profil : si le joueur a déjà joué sur le jeu, il choisit son nom et l’application se
charge de lui créer une nouvelle partie, sinon il choisit un nom et le joueur va être enregistré
sur la base de données.
Traçabilité : l’ensemble des joueurs ainsi que leurs parties et le meilleur score atteint dans
chaque partie.
GameBoard : après la sélection du nom du jouer, ce dernier doit choisir l’avion (attaque,
agilité, nombre de vie) ainsi que le niveau (intermédiaire, haut niveau ...).
Avions Ennemis : ça dépend du niveau du joueur, on affiche des avions ennemis différents
(vitesse, type d’ennemie).
Tir des missiles : l’avion doit tirer des missiles avers les ennemis.
Détection des collisions : si l’avion ennemi (respectivement le missile de l’avion ennemie)
à toucher notre avion on doit diminuer le nombre de vie restant (après trois frappes).
InfoBoard : on doit afficher le nom du joueur, son score, niveau, ainsi que le nombre de
vie restant.
PowerUps : un powerUps s’affiche à chaque fois d’une manière aléatoire qui peut être soit
un ajout de vie, tir d’une double missile, tir d’une triple missile, protection contre les
ennemis.
SFX : le tir des missiles, PowerUps, le passage d’un niveau à un autre est caractérisé par
un effet sonore spécial.
Performances : nous avons essayé que le jeu soit le plus performant possible en niveau de
consommation mémoire ainsi que la rapidité du jeu (Threads).
Analyse et conception
3. Analyse du travail réalisé
Un des objectifs principaux de ce projet a été de nous habituer au travail en groupe
et aux notions de projet. Organiser son temps, établir les tâches ou encore nous obliger à
respecter notre cahier de charge. Nous avons dans un premier temps travaillé ensemble sur
les premières classes à établir (notre premier diagramme de classe en UML) afin d'établir
un socle commun au sein de notre groupe en codant en dure.
4. Diagrammes UML
Après plusieurs premiers tests et après avoir imaginé de nombreux cas de figures,
nous sommes arrivés à une configuration du jeu à travers deux schémas :
a. Classes (Structure du projet)
Voir Annexe 1.
Pour organiser le projet de sorte qu’on aura une structure bien
défini on a implémenté le patron de conception MVC (Model View
Controller) afin de séparer l’affichage des informations, les actions de
l’utilisateur et l’accès aux données.
 bean : les classes.
 dao : la connexion et l’interaction avec la base de données.
 res : les différents images (background, avion, missiles..).
 service : concernant le traitement de la musique et la liaison
entre la couche view et dao.
 view : l’interaction avec l’utilisateur (création du joueur, choix
d’avion et niveau ..).
 sound : les différents morceaux de musique utilisés.
 font : font externe pour l’affichage du score (Digital Font).
Figure 1 packages du projet
Réalisation
5. Outils et Langage
a. Bibliothèques Graphiques
AWT vs SWING ?
Nous allons, dans cette section, nous intéresser à la mise en œuvre d'interfaces
graphiques en Java. En effet Java nous permet de créer toutes sortes d'interfaces, et d'y
inclure tous types de composants : des boutons, des cases à cocher, des zones de saisie de
texte, des images ...etc., avec lesquelles on peut faire pas mal de choses à savoir un jeu.
Mais avant d'aller plus loin il nous faut être capable de faire un choix. En effet, deux API
de mise en œuvre d'interfaces graphiques sont proposées par l'environnement Java SE
(Standard Edition) : l'AWT (Abstract Window Toolkit) et SWING.
 Le principal avantage à utiliser l'AWT réside dans les performances en termes
d'affichage.
 L’AWT ne contient que des composants graphiques qui existent sur tous les OS.
Du coup, on peut affirmer que cette librairie est relativement pauvre.
 Dans AWT c'est que Java fait appel au système d'exploitation sous-jacent pour
afficher les composants graphiques.
 Dans SWING ce n'est plus l'OS qui va pixéliser les différents éléments graphiques
mais bien l'API Java Swing. Du coup, si un composant graphique n'est pas proposé
par un système d'exploitation, il n'y a pas de soucis.
 Une application codée en SWING consommera plus de ressources (mémoire et
CPU) qu'une application codée via l'AWT.
 AWT est adapté à nos besoin (performance du jeu élevé grâce à l’affichage
rapide des composantes graphiques).
b. Gestion de versions
La gestion de versions (en anglais version control ou revision control) consiste à
maintenir l'ensemble des versions d'un ou plusieurs fichiers. Essentiellement utilisée dans
le domaine de la création de logiciels, elle concerne surtout la gestion des codes source.
Dans notre cas on a utilisé un logiciel de gestion de versions
décentralisé qui permet :
 La gestion des branches. On peut travailler sur un projet en parallèle sans se
marcher sur les pieds.
 Les algorithmes de fusion : quand un fichier a été modifié par plusieurs personnes
en même temps, Git sait s’adapter et choisir un algorithme qui fusionne
intelligemment les lignes du fichier qui ont été modifiées.
 Savoir qu’une fonction a été déplacée d’un fichier à un autre et par qui.
 Visualiser l'historique des validations.
 GIT permet de travailler en collaboration d’une manière efficace.
c. Langage
Nous sommes invités à réaliser ce projet dans le cadre des études du module
programmation orienté objet en java donc nous sommes obligés de réaliser le projet en
java, qui offre malgré tout un certain nombre d’avantages :
 Portable : exécutable sur n'importe quel système, à condition d'avoir installé
une JVM).
 API : Java offre un nombre d’API qui facilite la programmation et qui
correspond à notre besoin.
 Multi-plateforme : Une application développer en java fonctionnera sous un
système Unix, ou Windows ou n’importe quelle autre OS.
 Pour développer des jeux vidéo en tant que professionnel il faut opter pour le
C++ comme langage de programmation.
d. Plateforme de développement
NetBeans vs Eclipse ?
NetBeans est l'IDE supporté officiellement par Sun au contraire d'Eclipse. Donc
quels sont les comparatifs entre les deux IDE :
 Eclipse est beaucoup plus utilisé (surtout dans les entreprises, ce qui est
important).
 Eclipse propose plus de plugins (car il est plus utilisé).
 Eclipse a une meilleure gestion des raccourcie (pour gagner du temps).
 NetBeans est plus léger.
 NetBeans est plus rapide.
 NetBeans est plus agréable à l'utilisation.
 NetBeans a plus de plugins préinstallé (de fonction ou il faut un plugin sous
Eclipse).
 Donc c’est une question de choix. Nous avons l’habitude de travailler avec
NetBeans, donc pour l’IDE on a choisi NetBeans.
6. Exemple du code
Nous n'avons pas jugé utile d'inclure l'intégralité de notre code dans ce rapport,
mais nous décrirons seulement quelques extraits qui nous paraissent intéressants.
a. Création d’une partie
Une partie est créé en choisissant le nom du joueur ainsi que le niveau et l’avion
souhaité. L’interface offre un comboBox dans laquelle on charge les listes des joueurs
existe dans la base de données. Au cas où il a choisi ‘Nouveau Joueur’ un TextField sera
activé pour lui permettre de créer son nom. Sinon il choisit son nom (déjà existé sur la
base) ou il aura la possibilité de jouer avec DefaultPlayer.
Code source :
 Couche View :
Au niveau ComboBox il faut traiter l’activation et la désactivation du TextField en
fonction de la sélection de ‘Nouveau...’ ou ‘Nom du Joueur’.
Figure 5 Traitement du TextField
Figure 2 un nouveau joueur Figure 3 sélection d'un joueur
Figure 4 affectation du nom de joueur au TextField (désactivé)
La liste des joueurs déjà existé sur la base doit être chargé lors
du chargement de l’interface. Donc dans le constructeur on fait
appel à la méthode qui fait ce traitement.
Le vrai traitement commence en cliquant sur le bouton
Figure 6 Chargement de la liste des joueurs
Figure 7 Création du joueur et son partie
Dans un premier temps il faut charger la liste des joueurs existants dans la base de données,
et pour respecter l’architecture MVC qui impose la séparation du traitement métier et
l’affichage on crée un objet des classes JoueurService et PartieService. Ces derniers vont
communiquer avec la couche DAO (JoueurDAO, PartieDAO) responsable de
l’interaction avec la base de données.
Après importation de la liste des joueurs il faut créer la partie et le joueur en cas de
‘Nouveau...’ ou créer seulement la partie en cas de choix d’un joueur déjà existé.
(Figure 7).
Figure 8 Dispatching, Forwarding et Session
Le traitement qui suive consiste à mettre la partie courante dans la session pour qu’on
puisse récupérer le nom du joueur dans la fenêtre du jeu (Dispatching et Forwarding).
Après on invoque l’instance du class StartingClass qui contient le traitement du jeu
(affichage de l’avion, les ennemies ...).
 Couche Service :
Pour des raisons d’implémentation de l’architecture MVC la couche view ne
communique jamais directement avec la couche dao, mais il faut passer par un pont c’est
la couche controller, le controller est représenté dans notre projet par le package service
qui sert à recevoir tous les événements de la vue et enclenche les actions à effectuer.
Figure 9 create() et findAll() du couche service
 Couche Dao :
b. Déplacement de l’avion
Le déplacement se fait grâce aux touches flèche haut, bas, gauche, droite. Donc
deux fonctions essentiellement s’intervient pour réaliser ce traitement.
Figure 10 La méthode keyPressed()
Figure 11 La méthode keyReleased()
Les méthodes up(), down(), moveLeft(), moveRight(), stop() change les cordonnées de
l’avion suivant les axes Ox ou Oy selon le déplacement.
L’avion change de cordonnées en cas de déplacement, la méthode qui gérer ceci est la
méthode update(). Avec un traitement de plus concernant les projectiles
(avion.getProjectiles().get(i).update()) et le défilement de l’arrière-plan(bg.update()) et
l’affichage des images avec des nouveau cordonnées (repaint()) on obtient un traitement
représenté dans la méthode whileAvionIsAlive().
Figure 12 Méthode whileAvionIsAlive()
Il faut toujours garder à l’esprit la notion de la performance de jeu, pour cela il faut
penser à supprimer les ennemis de la liste quand ils dépassent l’écran (Stopper le
Thread) ; c’est le rôle de la fonction removeEnnemisOverLimitte().
c. Détection des collisions
L’idée c’est de dessiner un rectangle autour de chaque objet et vérifier après
l’intersections des rectangles pour détecter une collision.
La taille du rectangle prend la taille de l’objet qu’on veut détecter sa collision mais
les cordonnées dépend des cordonnées variés cad on les fixes dans la méthode update().
La méthode checkCollision() permet de gérer si une collision a été détecter ou pas.
d. L’explosion des ennemis
Quand un projectile frappe un ennemi, ce dernier doit s’explosé et supprimer de la
liste des avions ennemis.
e. Des ennemis vous suivent
A partir du niveau 3 les ennemis suivent l’avion.
Figure 15 Méthode follow()
Figure 13 Méthode checkCollision()
Figure 14 Méthode destroy()
 Le développement est géant (en termes de traitement) et on n’a pas pu intégrer
tout le traitement fait dans le projet parce que chaque fonction dépend d’un
grand nombre d’autres fonctions ce qui rend l’intégration de l’explication
dans le rapport un peu délicat.
7. Résultat Final
Le jeu commence par une interface simple de choix de l’avion et le nom du joueur ainsi
que le niveau.
Figure 16 Interface GameBoard
Figure 17 GameBoard avec des animations
L’interface de jeu se caractérise par un InfoBoard en haut à droite sur lequel on
affiche le score le nom du joueur et le niveau.
En Bas à gauche le nombre de vie restant se représente par un nombre d‘images de
l’avion.
En cas d’explosion de l’ennemie une animation se produit.
Figure 18 Niveau 1
Figure 19 Explosion de l'ennemie
A partir du niveau 3 les ennemis commencent à tirer des projectiles et leurs vitesses
de déplacement s’augmente.
L’apparition de l’ennemiBoss se fait petit à petit avec un affichage d’un bar en bas
à droite qui affiche Health de l’ennemiBoss.
Figure 20 Tir des projectiles par l'ennemie
Figure 21 Entrée du BossEnnemie
L’explosion de l’ennemieBoss :
Les PowerUps :
Figure 22 Explosion de l'ennemieBoss
Quand la partie est finie un GameOver s’affiche sur l’écran avec une petit fenêtre
qui indique le score atteint et le nom du joueur.
Figure 23 GameOver
Figure 24 Score Final
Conclusion
8. Apport du projet
a. Travail en groupe
Une des plus grosses difficultés tout au long du projet reste à nos yeux le travail en
groupe. Parce que nous possédons des aptitudes déférentes, des intérêts différents pour la
conception, la programmation ou encore la rédaction, il a fallu s'organiser dès le début
pour déléguer les tâches à chacun et définir précisément la politique de développement
(concepts et outils utilisés, style du code, etc.) pour que la mise en commun se fasse le
plus simplement possible. Nous avons tous les deux encourager l'autre dans les moments
difficiles (compilations échoués, erreurs mystérieuses), et partager nos réflexions sur le
développement du projet.
a. Outils manipulés
Ce projet a aussi été l'occasion pour nous d'’enrichir nos connaissances dans le
langage Java, de nous familiariser avec la programmation graphique, le modèle vue-
contrôleur, mais aussi de se construire un environnement de développement efficace et
adapté à nos besoins. Nous avons utilisé pour ce projet :
 Microssoft Office Word 2016 pour la rédaction de rapport.
 Adobe Photoshop CC 2014 pour la manipulation des images.
 Audacity pour le traitement de la musique.
 ArgoUML pour les diagrammes UML.
Annexes
Annexe 1
Figure 25 Diagrammes de classes
Sitographie
http://www.kilobolt.com/tutorials.html un tutorial pour développer des jeux vidéo en
java.
http://www.deviantart.com la référence pour tous les images utilisées dans le projet.
https://github.com un service web d'hébergement et de gestion de développement de
logiciels, utilisant le logiciel de gestion de versions Git.
http://stackoverflow.com la référence pour toute sorte d’erreurs.
https://www.google.com/ recherches, documentations.
Fin
SAOUDI Anas WAFDI Ahmed
30/04/2016

Recommandé

Conception et réalisation d'une application web et mobile de e-commerce par
Conception et réalisation d'une application web et mobile de e-commerceConception et réalisation d'une application web et mobile de e-commerce
Conception et réalisation d'une application web et mobile de e-commerceAHMEDBELGHITH4
3.3K vues27 diapositives
Conception et réalisation d’une application web (1).pptx par
Conception et réalisation d’une application web (1).pptxConception et réalisation d’une application web (1).pptx
Conception et réalisation d’une application web (1).pptxSouadZid
514 vues28 diapositives
Application web Gestion RH ASP.NET MVC5 par
Application web Gestion RH ASP.NET MVC5Application web Gestion RH ASP.NET MVC5
Application web Gestion RH ASP.NET MVC5YounessLaaouane
1.6K vues48 diapositives
Rapport pfe talan_2018_donia_hammami par
Rapport pfe talan_2018_donia_hammamiRapport pfe talan_2018_donia_hammami
Rapport pfe talan_2018_donia_hammamiDonia Hammami
33.6K vues90 diapositives
diagramme des cas d'utilisation par
diagramme des cas d'utilisationdiagramme des cas d'utilisation
diagramme des cas d'utilisationAmir Souissi
7.3K vues29 diapositives
Rapport PFE ISMAGI SQLI Microsoft par
Rapport PFE ISMAGI SQLI MicrosoftRapport PFE ISMAGI SQLI Microsoft
Rapport PFE ISMAGI SQLI MicrosoftOussama BAHLOULI
1.1K vues90 diapositives

Contenu connexe

Tendances

Plateforme d’e learning par
Plateforme d’e learningPlateforme d’e learning
Plateforme d’e learningEl Aber Haythem
14.1K vues15 diapositives
Rapport Projet ERP - Plateforme Odoo 12 (PFE Licence) par
Rapport Projet ERP - Plateforme Odoo 12 (PFE Licence)Rapport Projet ERP - Plateforme Odoo 12 (PFE Licence)
Rapport Projet ERP - Plateforme Odoo 12 (PFE Licence)Yasmine Tounsi
4.8K vues232 diapositives
Rapport Projet De Fin D'étude de Conception et développement d’une applicatio... par
Rapport Projet De Fin D'étude de Conception et développement d’une applicatio...Rapport Projet De Fin D'étude de Conception et développement d’une applicatio...
Rapport Projet De Fin D'étude de Conception et développement d’une applicatio...mouafekmazia
905 vues100 diapositives
Rapport_pfe_licence_ISAMM par
Rapport_pfe_licence_ISAMMRapport_pfe_licence_ISAMM
Rapport_pfe_licence_ISAMMEya TAYARI
333 vues84 diapositives
diagramme de séquence UML par
diagramme de séquence UMLdiagramme de séquence UML
diagramme de séquence UMLAmir Souissi
21.4K vues20 diapositives
Rapport Pfe Application Web e-commerce Symfony2 par
Rapport Pfe Application Web e-commerce Symfony2Rapport Pfe Application Web e-commerce Symfony2
Rapport Pfe Application Web e-commerce Symfony2Ben Abdelwahed Slim
48.6K vues81 diapositives

Tendances(20)

Rapport Projet ERP - Plateforme Odoo 12 (PFE Licence) par Yasmine Tounsi
Rapport Projet ERP - Plateforme Odoo 12 (PFE Licence)Rapport Projet ERP - Plateforme Odoo 12 (PFE Licence)
Rapport Projet ERP - Plateforme Odoo 12 (PFE Licence)
Yasmine Tounsi4.8K vues
Rapport Projet De Fin D'étude de Conception et développement d’une applicatio... par mouafekmazia
Rapport Projet De Fin D'étude de Conception et développement d’une applicatio...Rapport Projet De Fin D'étude de Conception et développement d’une applicatio...
Rapport Projet De Fin D'étude de Conception et développement d’une applicatio...
mouafekmazia905 vues
Rapport_pfe_licence_ISAMM par Eya TAYARI
Rapport_pfe_licence_ISAMMRapport_pfe_licence_ISAMM
Rapport_pfe_licence_ISAMM
Eya TAYARI333 vues
diagramme de séquence UML par Amir Souissi
diagramme de séquence UMLdiagramme de séquence UML
diagramme de séquence UML
Amir Souissi21.4K vues
Rapport Pfe Application Web e-commerce Symfony2 par Ben Abdelwahed Slim
Rapport Pfe Application Web e-commerce Symfony2Rapport Pfe Application Web e-commerce Symfony2
Rapport Pfe Application Web e-commerce Symfony2
Ben Abdelwahed Slim48.6K vues
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2 par Sofien Benrhouma
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
Sofien Benrhouma155.6K vues
Conception et Réalisation Application Web Laravel PFE BTS par FaissoilMkavavo
Conception et Réalisation Application Web Laravel PFE BTSConception et Réalisation Application Web Laravel PFE BTS
Conception et Réalisation Application Web Laravel PFE BTS
FaissoilMkavavo4.7K vues
Chp3 - Architecture Logicielle des Applications Mobiles par Lilia Sfaxi
Chp3 - Architecture Logicielle des Applications MobilesChp3 - Architecture Logicielle des Applications Mobiles
Chp3 - Architecture Logicielle des Applications Mobiles
Lilia Sfaxi15.3K vues
Rapport de projet de fin d"études par Mohamed Boubaya
Rapport de projet de fin d"étudesRapport de projet de fin d"études
Rapport de projet de fin d"études
Mohamed Boubaya9.2K vues
RapportPFE_IngenieurInformatique_ESPRIT par Lina Meddeb
RapportPFE_IngenieurInformatique_ESPRITRapportPFE_IngenieurInformatique_ESPRIT
RapportPFE_IngenieurInformatique_ESPRIT
Lina Meddeb6.3K vues
Rapport PFE: Gestion de Parc Informatique par Eric Maxime
Rapport PFE: Gestion de Parc InformatiqueRapport PFE: Gestion de Parc Informatique
Rapport PFE: Gestion de Parc Informatique
Eric Maxime54.5K vues
PFE :: Application de gestion des dus d'enseignement par Nassim Bahri
PFE :: Application de gestion des dus d'enseignementPFE :: Application de gestion des dus d'enseignement
PFE :: Application de gestion des dus d'enseignement
Nassim Bahri49.5K vues
Rapport de pfe format doc 2013 par Addi Ait-Mlouk
Rapport de pfe format doc 2013Rapport de pfe format doc 2013
Rapport de pfe format doc 2013
Addi Ait-Mlouk16.2K vues
RAPPORT DE PROJET DE FIN D’ETUDES par TombariAhmed
RAPPORT DE PROJET DE FIN D’ETUDESRAPPORT DE PROJET DE FIN D’ETUDES
RAPPORT DE PROJET DE FIN D’ETUDES
TombariAhmed1.7K vues
Ecole ESMA : Projet Fin de semestre - Application de gestion d'une école - Di... par Mehdi Hamime
Ecole ESMA : Projet Fin de semestre - Application de gestion d'une école - Di...Ecole ESMA : Projet Fin de semestre - Application de gestion d'une école - Di...
Ecole ESMA : Projet Fin de semestre - Application de gestion d'une école - Di...
Mehdi Hamime16.2K vues
Rapport pfe Conceptionet Developpement d'une Application web et Mobile par Raoua Bennasr
Rapport pfe Conceptionet Developpement d'une Application web et  Mobile Rapport pfe Conceptionet Developpement d'une Application web et  Mobile
Rapport pfe Conceptionet Developpement d'une Application web et Mobile
Raoua Bennasr17.1K vues
Présentation pfe Développement d'une application bancaire mobile par Nader Somrani
Présentation pfe Développement d'une application bancaire mobilePrésentation pfe Développement d'une application bancaire mobile
Présentation pfe Développement d'une application bancaire mobile
Nader Somrani43.8K vues
CONCEPTION ET REALISATION D ’ UNE APPLICATION WEB POUR GESTION DE P ROJETS DE... par Madjid Meddah
CONCEPTION ET REALISATION D ’ UNE APPLICATION WEB POUR GESTION DE P ROJETS DE...CONCEPTION ET REALISATION D ’ UNE APPLICATION WEB POUR GESTION DE P ROJETS DE...
CONCEPTION ET REALISATION D ’ UNE APPLICATION WEB POUR GESTION DE P ROJETS DE...
Madjid Meddah11K vues

Similaire à Rapport jeu en JAVA

Rapport de Projet professionnel personnel.pdf par
Rapport de Projet professionnel personnel.pdfRapport de Projet professionnel personnel.pdf
Rapport de Projet professionnel personnel.pdfsahar dridi
25.2K vues23 diapositives
S2_Projet_-_Groupe_18_-_Cahier_des_charges.pdf par
S2_Projet_-_Groupe_18_-_Cahier_des_charges.pdfS2_Projet_-_Groupe_18_-_Cahier_des_charges.pdf
S2_Projet_-_Groupe_18_-_Cahier_des_charges.pdflouise645546
6 vues13 diapositives
Jeu Motus C par
Jeu Motus  CJeu Motus  C
Jeu Motus CEric Maxime
4.7K vues20 diapositives
Analyse statistique sur DOTA par
Analyse statistique sur DOTAAnalyse statistique sur DOTA
Analyse statistique sur DOTABanville Julien
709 vues21 diapositives
AT2010 Planning Poker par
AT2010 Planning PokerAT2010 Planning Poker
AT2010 Planning PokerNormandy JUG
1.6K vues21 diapositives
Projet1 mastermind 2010-2011 par
Projet1 mastermind 2010-2011Projet1 mastermind 2010-2011
Projet1 mastermind 2010-2011nadi noura
3.5K vues22 diapositives

Similaire à Rapport jeu en JAVA(20)

Rapport de Projet professionnel personnel.pdf par sahar dridi
Rapport de Projet professionnel personnel.pdfRapport de Projet professionnel personnel.pdf
Rapport de Projet professionnel personnel.pdf
sahar dridi25.2K vues
S2_Projet_-_Groupe_18_-_Cahier_des_charges.pdf par louise645546
S2_Projet_-_Groupe_18_-_Cahier_des_charges.pdfS2_Projet_-_Groupe_18_-_Cahier_des_charges.pdf
S2_Projet_-_Groupe_18_-_Cahier_des_charges.pdf
louise6455466 vues
Projet1 mastermind 2010-2011 par nadi noura
Projet1 mastermind 2010-2011Projet1 mastermind 2010-2011
Projet1 mastermind 2010-2011
nadi noura3.5K vues
Les ateliers android_1_vers2015 par Saber LAJILI
Les ateliers android_1_vers2015Les ateliers android_1_vers2015
Les ateliers android_1_vers2015
Saber LAJILI900 vues
Les ateliers android_1_vers2015 par Sabeur LAJILI
Les ateliers android_1_vers2015Les ateliers android_1_vers2015
Les ateliers android_1_vers2015
Sabeur LAJILI130 vues
Les ateliers android_1_vers2015 par Sabeur LAJILI
Les ateliers android_1_vers2015Les ateliers android_1_vers2015
Les ateliers android_1_vers2015
Sabeur LAJILI213 vues
Visualisation graphique R avec ggplot2 par Daname KOLANI
Visualisation graphique R avec ggplot2Visualisation graphique R avec ggplot2
Visualisation graphique R avec ggplot2
Daname KOLANI2.7K vues
Rapport de Soutenance 1 par BartOunay
Rapport de Soutenance 1Rapport de Soutenance 1
Rapport de Soutenance 1
BartOunay630 vues

Dernier

Abréviations et symboles (1).pdf par
Abréviations et symboles (1).pdfAbréviations et symboles (1).pdf
Abréviations et symboles (1).pdfStagiaireLearningmat
26 vues2 diapositives
Newsletter SPW Agriculture en province du Luxembourg du 13-11-23 (adapté au 2... par
Newsletter SPW Agriculture en province du Luxembourg du 13-11-23 (adapté au 2...Newsletter SPW Agriculture en province du Luxembourg du 13-11-23 (adapté au 2...
Newsletter SPW Agriculture en province du Luxembourg du 13-11-23 (adapté au 2...BenotGeorges3
24 vues18 diapositives
ONU.pdf par
ONU.pdfONU.pdf
ONU.pdfChristopheFontaine13
28 vues2 diapositives
La Lettre Formelle.pptx par
La Lettre Formelle.pptxLa Lettre Formelle.pptx
La Lettre Formelle.pptxstudymaterial91010
14 vues10 diapositives
Cours Audit General 2019 (1).prof tatouti .pdf par
Cours Audit  General 2019 (1).prof tatouti .pdfCours Audit  General 2019 (1).prof tatouti .pdf
Cours Audit General 2019 (1).prof tatouti .pdfAbdelghani19
7 vues230 diapositives
Newsletter SPW Agriculture en province du Luxembourg du 13-11-23 par
Newsletter SPW Agriculture en province du Luxembourg du 13-11-23Newsletter SPW Agriculture en province du Luxembourg du 13-11-23
Newsletter SPW Agriculture en province du Luxembourg du 13-11-23BenotGeorges3
6 vues17 diapositives

Dernier(15)

Newsletter SPW Agriculture en province du Luxembourg du 13-11-23 (adapté au 2... par BenotGeorges3
Newsletter SPW Agriculture en province du Luxembourg du 13-11-23 (adapté au 2...Newsletter SPW Agriculture en province du Luxembourg du 13-11-23 (adapté au 2...
Newsletter SPW Agriculture en province du Luxembourg du 13-11-23 (adapté au 2...
BenotGeorges324 vues
Cours Audit General 2019 (1).prof tatouti .pdf par Abdelghani19
Cours Audit  General 2019 (1).prof tatouti .pdfCours Audit  General 2019 (1).prof tatouti .pdf
Cours Audit General 2019 (1).prof tatouti .pdf
Abdelghani197 vues
Newsletter SPW Agriculture en province du Luxembourg du 13-11-23 par BenotGeorges3
Newsletter SPW Agriculture en province du Luxembourg du 13-11-23Newsletter SPW Agriculture en province du Luxembourg du 13-11-23
Newsletter SPW Agriculture en province du Luxembourg du 13-11-23
BenotGeorges36 vues
Julia Margaret Cameron par Txaruka
Julia Margaret CameronJulia Margaret Cameron
Julia Margaret Cameron
Txaruka70 vues
Formation M2i - Cadre réglementaire des IA Génératives : premiers éléments de... par M2i Formation
Formation M2i - Cadre réglementaire des IA Génératives : premiers éléments de...Formation M2i - Cadre réglementaire des IA Génératives : premiers éléments de...
Formation M2i - Cadre réglementaire des IA Génératives : premiers éléments de...
M2i Formation8 vues
Formation M2i - Augmenter son impact en communication et en management grâce... par M2i Formation
Formation M2i - Augmenter son impact en communication et en management grâce...Formation M2i - Augmenter son impact en communication et en management grâce...
Formation M2i - Augmenter son impact en communication et en management grâce...
M2i Formation48 vues
Présentation de lancement SAE105 par JeanLucHusson
Présentation de lancement SAE105Présentation de lancement SAE105
Présentation de lancement SAE105
JeanLucHusson20 vues
Julia Margaret Cameron par Txaruka
Julia Margaret Cameron Julia Margaret Cameron
Julia Margaret Cameron
Txaruka5 vues
Newsletter SPW Agriculture en province de LIEGE du 28-11-23 par BenotGeorges3
Newsletter SPW Agriculture en province de LIEGE du 28-11-23Newsletter SPW Agriculture en province de LIEGE du 28-11-23
Newsletter SPW Agriculture en province de LIEGE du 28-11-23
BenotGeorges326 vues
MNGTCOUT PROJET 04112023.pptx par HAIDI2
MNGTCOUT PROJET 04112023.pptxMNGTCOUT PROJET 04112023.pptx
MNGTCOUT PROJET 04112023.pptx
HAIDI26 vues

Rapport jeu en JAVA

  • 1. Rapport Final de projet : JetPlane Game , , sous la direction de monsieur Année universitaire : 2016 - 2017 Master SEM
  • 2. Table des matières Introduction ............................................................................................................ 4 1. Définition du projet .......................................................................................................4 a. Énoncé........................................................................................................................4 b. Plan.............................................................................................................................4 c. Présentation générale.................................................................................................4 2. Cahier des charges.........................................................................................................5 Analyse et conception............................................................................................ 6 3. Analyse du travail réalisé ..............................................................................................6 4. Diagrammes UML.........................................................................................................6 a. Classes (Structure du projet).....................................................................................6 Réalisation............................................................................................................... 7 5. Outils et Langage...........................................................................................................7 a. Bibliothèques Graphiques..........................................................................................7 b. Gestion de versions ....................................................................................................8 c. Langage......................................................................................................................8 d. Plateforme de développement....................................................................................9 6. Exemple du code............................................................................................................9 a. Création d’une partie.................................................................................................9 b. Déplacement de l’avion............................................................................................14 c. Détection des collisions.............................................................................................15 d. L’explosion des ennemis ..........................................................................................16 e. Des ennemis vous suivent.........................................................................................16 7. Résultat Final...............................................................................................................17 Conclusion............................................................................................................. 23 8. Apport du projet..........................................................................................................23 a. Travail en groupe.....................................................................................................23 a. Outils manipulés ......................................................................................................23 Annexes ................................................................................................................. 24 Sitographie............................................................................................................ 25
  • 3. Table des figures Figure 1 packages du projet..................................................................................................6 Figure 2 un nouveau joueur................................................................................................10 Figure 3 sélection d'un joueur ............................................................................................10 Figure 4 affectation du nom de joueur au TextField (désactivé) ..................................10 Figure 5 Traitement du TextField .....................................................................................10 Figure 6 Chargement de la liste des joueurs ....................................................................11 Figure 7 Création du joueur et son partie ........................................................................11 Figure 8 Dispatching, Forwarding et Session ..................................................................12 Figure 9 create() et findAll() du couche service...............................................................13 Figure 10 La méthode keyPressed() ..................................................................................14 Figure 11 La méthode keyReleased() ...............................................................................14 Figure 12 Méthode whileAvionIsAlive() ...........................................................................15 Figure 13 Méthode checkCollision()..................................................................................16 Figure 14 Méthode destroy()...............................................................................................16 Figure 15 Méthode follow().................................................................................................16 Figure 16 Interface GameBoard ........................................................................................18 Figure 17 GameBoard avec des animations .....................................................................18 Figure 18 Niveau 1................................................................................................................19 Figure 19 Explosion de l'ennemie ......................................................................................19 Figure 20 Tir des projectiles par l'ennemie......................................................................20 Figure 21 Entrée du BossEnnemie.....................................................................................20 Figure 22 Explosion de l'ennemieBoss ..............................................................................21 Figure 23 GameOver............................................................................................................22 Figure 24 Score Final ...........................................................................................................22 Figure 25 Diagrammes de classes.......................................................................................24
  • 4. Introduction 1. Définition du projet a. Énoncé Le projet dont nous sommes en charge consiste à réaliser un jeu en java. Ce jeu sera simplifié par rapport aux règles du jeu normal, car il doit répondre aux contraintes du sujet. En effet, le but de ce projet est de mettre en exergue les principes fondamentaux de la programmation objet, c’est à dire l’héritage entre les classes, la gestion des interfaces, le polymorphisme, les Threads, etc. Pour bien répondre au problème, nous nous inspirerons du cycle général de la conception objet que nous avons vu en cours. Cette méthode de conception nous permettra d’avoir une présentation claire et structurée de notre projet. b. Plan Nous présentons dans ce document la démarche que nous avons suivi pour tenter de mener à bien ce projet, en décrivant les deux grands axes de développement, c'est-à- dire la conception et l'analyse du projet avec diagrammes UML à l'appui, la réalisation technique (choix des outils, portions de code, modèle utilisé), notre avis sur les résultats obtenus et les objectifs initiaux, puis une conclusion personnelle sur ce projet. c. Présentation générale Le jeu commence par une interface simple dans laquelle le joueur est invité à créer son nom ou choisir son nom s’il est un ancien joueur. Après il choisit l’avion et le niveau souhaité. Ensuite la partie commence, le joueur déplace l’avion à droite à gauche an avant et en arrière pour éviter les ennemis et leurs missiles, le tir des missiles se fait par la touche ‘espace’. Un tableau de score est placé en haut à droite qui affiche le score, niveau, et le nombre des vies restantes, ces derniers sont aussi représentés sous forme d’images en bas à gauche. Le niveau change en fonction du score atteint, si le score ≥ 1000 le niveau passe de 1 à 2 et les ennemis s’augmente avec une vitesse plus élevée, et ainsi de suite (niveau 3 score ≥ 2000 ...etc.) jusqu’au dernier niveau ou l’ennemi boss apparu. D’une manière aléatoire une sorte d’aide apparue sous forme PowerUps qui peut être soit tir des doubles missiles, triples missiles, protection contre les missiles et les ennemis, ajout de vies.
  • 5. 2. Cahier des charges Notre programme doit offrir ces fonctionnalités : Gestion du profil : si le joueur a déjà joué sur le jeu, il choisit son nom et l’application se charge de lui créer une nouvelle partie, sinon il choisit un nom et le joueur va être enregistré sur la base de données. Traçabilité : l’ensemble des joueurs ainsi que leurs parties et le meilleur score atteint dans chaque partie. GameBoard : après la sélection du nom du jouer, ce dernier doit choisir l’avion (attaque, agilité, nombre de vie) ainsi que le niveau (intermédiaire, haut niveau ...). Avions Ennemis : ça dépend du niveau du joueur, on affiche des avions ennemis différents (vitesse, type d’ennemie). Tir des missiles : l’avion doit tirer des missiles avers les ennemis. Détection des collisions : si l’avion ennemi (respectivement le missile de l’avion ennemie) à toucher notre avion on doit diminuer le nombre de vie restant (après trois frappes). InfoBoard : on doit afficher le nom du joueur, son score, niveau, ainsi que le nombre de vie restant. PowerUps : un powerUps s’affiche à chaque fois d’une manière aléatoire qui peut être soit un ajout de vie, tir d’une double missile, tir d’une triple missile, protection contre les ennemis. SFX : le tir des missiles, PowerUps, le passage d’un niveau à un autre est caractérisé par un effet sonore spécial. Performances : nous avons essayé que le jeu soit le plus performant possible en niveau de consommation mémoire ainsi que la rapidité du jeu (Threads).
  • 6. Analyse et conception 3. Analyse du travail réalisé Un des objectifs principaux de ce projet a été de nous habituer au travail en groupe et aux notions de projet. Organiser son temps, établir les tâches ou encore nous obliger à respecter notre cahier de charge. Nous avons dans un premier temps travaillé ensemble sur les premières classes à établir (notre premier diagramme de classe en UML) afin d'établir un socle commun au sein de notre groupe en codant en dure. 4. Diagrammes UML Après plusieurs premiers tests et après avoir imaginé de nombreux cas de figures, nous sommes arrivés à une configuration du jeu à travers deux schémas : a. Classes (Structure du projet) Voir Annexe 1. Pour organiser le projet de sorte qu’on aura une structure bien défini on a implémenté le patron de conception MVC (Model View Controller) afin de séparer l’affichage des informations, les actions de l’utilisateur et l’accès aux données.  bean : les classes.  dao : la connexion et l’interaction avec la base de données.  res : les différents images (background, avion, missiles..).  service : concernant le traitement de la musique et la liaison entre la couche view et dao.  view : l’interaction avec l’utilisateur (création du joueur, choix d’avion et niveau ..).  sound : les différents morceaux de musique utilisés.  font : font externe pour l’affichage du score (Digital Font). Figure 1 packages du projet
  • 7. Réalisation 5. Outils et Langage a. Bibliothèques Graphiques AWT vs SWING ? Nous allons, dans cette section, nous intéresser à la mise en œuvre d'interfaces graphiques en Java. En effet Java nous permet de créer toutes sortes d'interfaces, et d'y inclure tous types de composants : des boutons, des cases à cocher, des zones de saisie de texte, des images ...etc., avec lesquelles on peut faire pas mal de choses à savoir un jeu. Mais avant d'aller plus loin il nous faut être capable de faire un choix. En effet, deux API de mise en œuvre d'interfaces graphiques sont proposées par l'environnement Java SE (Standard Edition) : l'AWT (Abstract Window Toolkit) et SWING.  Le principal avantage à utiliser l'AWT réside dans les performances en termes d'affichage.  L’AWT ne contient que des composants graphiques qui existent sur tous les OS. Du coup, on peut affirmer que cette librairie est relativement pauvre.  Dans AWT c'est que Java fait appel au système d'exploitation sous-jacent pour afficher les composants graphiques.  Dans SWING ce n'est plus l'OS qui va pixéliser les différents éléments graphiques mais bien l'API Java Swing. Du coup, si un composant graphique n'est pas proposé par un système d'exploitation, il n'y a pas de soucis.  Une application codée en SWING consommera plus de ressources (mémoire et CPU) qu'une application codée via l'AWT.  AWT est adapté à nos besoin (performance du jeu élevé grâce à l’affichage rapide des composantes graphiques).
  • 8. b. Gestion de versions La gestion de versions (en anglais version control ou revision control) consiste à maintenir l'ensemble des versions d'un ou plusieurs fichiers. Essentiellement utilisée dans le domaine de la création de logiciels, elle concerne surtout la gestion des codes source. Dans notre cas on a utilisé un logiciel de gestion de versions décentralisé qui permet :  La gestion des branches. On peut travailler sur un projet en parallèle sans se marcher sur les pieds.  Les algorithmes de fusion : quand un fichier a été modifié par plusieurs personnes en même temps, Git sait s’adapter et choisir un algorithme qui fusionne intelligemment les lignes du fichier qui ont été modifiées.  Savoir qu’une fonction a été déplacée d’un fichier à un autre et par qui.  Visualiser l'historique des validations.  GIT permet de travailler en collaboration d’une manière efficace. c. Langage Nous sommes invités à réaliser ce projet dans le cadre des études du module programmation orienté objet en java donc nous sommes obligés de réaliser le projet en java, qui offre malgré tout un certain nombre d’avantages :  Portable : exécutable sur n'importe quel système, à condition d'avoir installé une JVM).  API : Java offre un nombre d’API qui facilite la programmation et qui correspond à notre besoin.  Multi-plateforme : Une application développer en java fonctionnera sous un système Unix, ou Windows ou n’importe quelle autre OS.  Pour développer des jeux vidéo en tant que professionnel il faut opter pour le C++ comme langage de programmation.
  • 9. d. Plateforme de développement NetBeans vs Eclipse ? NetBeans est l'IDE supporté officiellement par Sun au contraire d'Eclipse. Donc quels sont les comparatifs entre les deux IDE :  Eclipse est beaucoup plus utilisé (surtout dans les entreprises, ce qui est important).  Eclipse propose plus de plugins (car il est plus utilisé).  Eclipse a une meilleure gestion des raccourcie (pour gagner du temps).  NetBeans est plus léger.  NetBeans est plus rapide.  NetBeans est plus agréable à l'utilisation.  NetBeans a plus de plugins préinstallé (de fonction ou il faut un plugin sous Eclipse).  Donc c’est une question de choix. Nous avons l’habitude de travailler avec NetBeans, donc pour l’IDE on a choisi NetBeans. 6. Exemple du code Nous n'avons pas jugé utile d'inclure l'intégralité de notre code dans ce rapport, mais nous décrirons seulement quelques extraits qui nous paraissent intéressants. a. Création d’une partie Une partie est créé en choisissant le nom du joueur ainsi que le niveau et l’avion souhaité. L’interface offre un comboBox dans laquelle on charge les listes des joueurs existe dans la base de données. Au cas où il a choisi ‘Nouveau Joueur’ un TextField sera activé pour lui permettre de créer son nom. Sinon il choisit son nom (déjà existé sur la base) ou il aura la possibilité de jouer avec DefaultPlayer.
  • 10. Code source :  Couche View : Au niveau ComboBox il faut traiter l’activation et la désactivation du TextField en fonction de la sélection de ‘Nouveau...’ ou ‘Nom du Joueur’. Figure 5 Traitement du TextField Figure 2 un nouveau joueur Figure 3 sélection d'un joueur Figure 4 affectation du nom de joueur au TextField (désactivé)
  • 11. La liste des joueurs déjà existé sur la base doit être chargé lors du chargement de l’interface. Donc dans le constructeur on fait appel à la méthode qui fait ce traitement. Le vrai traitement commence en cliquant sur le bouton Figure 6 Chargement de la liste des joueurs Figure 7 Création du joueur et son partie
  • 12. Dans un premier temps il faut charger la liste des joueurs existants dans la base de données, et pour respecter l’architecture MVC qui impose la séparation du traitement métier et l’affichage on crée un objet des classes JoueurService et PartieService. Ces derniers vont communiquer avec la couche DAO (JoueurDAO, PartieDAO) responsable de l’interaction avec la base de données. Après importation de la liste des joueurs il faut créer la partie et le joueur en cas de ‘Nouveau...’ ou créer seulement la partie en cas de choix d’un joueur déjà existé. (Figure 7). Figure 8 Dispatching, Forwarding et Session Le traitement qui suive consiste à mettre la partie courante dans la session pour qu’on puisse récupérer le nom du joueur dans la fenêtre du jeu (Dispatching et Forwarding). Après on invoque l’instance du class StartingClass qui contient le traitement du jeu (affichage de l’avion, les ennemies ...).
  • 13.  Couche Service : Pour des raisons d’implémentation de l’architecture MVC la couche view ne communique jamais directement avec la couche dao, mais il faut passer par un pont c’est la couche controller, le controller est représenté dans notre projet par le package service qui sert à recevoir tous les événements de la vue et enclenche les actions à effectuer. Figure 9 create() et findAll() du couche service  Couche Dao :
  • 14. b. Déplacement de l’avion Le déplacement se fait grâce aux touches flèche haut, bas, gauche, droite. Donc deux fonctions essentiellement s’intervient pour réaliser ce traitement. Figure 10 La méthode keyPressed() Figure 11 La méthode keyReleased() Les méthodes up(), down(), moveLeft(), moveRight(), stop() change les cordonnées de l’avion suivant les axes Ox ou Oy selon le déplacement.
  • 15. L’avion change de cordonnées en cas de déplacement, la méthode qui gérer ceci est la méthode update(). Avec un traitement de plus concernant les projectiles (avion.getProjectiles().get(i).update()) et le défilement de l’arrière-plan(bg.update()) et l’affichage des images avec des nouveau cordonnées (repaint()) on obtient un traitement représenté dans la méthode whileAvionIsAlive(). Figure 12 Méthode whileAvionIsAlive() Il faut toujours garder à l’esprit la notion de la performance de jeu, pour cela il faut penser à supprimer les ennemis de la liste quand ils dépassent l’écran (Stopper le Thread) ; c’est le rôle de la fonction removeEnnemisOverLimitte(). c. Détection des collisions L’idée c’est de dessiner un rectangle autour de chaque objet et vérifier après l’intersections des rectangles pour détecter une collision. La taille du rectangle prend la taille de l’objet qu’on veut détecter sa collision mais les cordonnées dépend des cordonnées variés cad on les fixes dans la méthode update().
  • 16. La méthode checkCollision() permet de gérer si une collision a été détecter ou pas. d. L’explosion des ennemis Quand un projectile frappe un ennemi, ce dernier doit s’explosé et supprimer de la liste des avions ennemis. e. Des ennemis vous suivent A partir du niveau 3 les ennemis suivent l’avion. Figure 15 Méthode follow() Figure 13 Méthode checkCollision() Figure 14 Méthode destroy()
  • 17.  Le développement est géant (en termes de traitement) et on n’a pas pu intégrer tout le traitement fait dans le projet parce que chaque fonction dépend d’un grand nombre d’autres fonctions ce qui rend l’intégration de l’explication dans le rapport un peu délicat. 7. Résultat Final
  • 18. Le jeu commence par une interface simple de choix de l’avion et le nom du joueur ainsi que le niveau. Figure 16 Interface GameBoard Figure 17 GameBoard avec des animations
  • 19. L’interface de jeu se caractérise par un InfoBoard en haut à droite sur lequel on affiche le score le nom du joueur et le niveau. En Bas à gauche le nombre de vie restant se représente par un nombre d‘images de l’avion. En cas d’explosion de l’ennemie une animation se produit. Figure 18 Niveau 1 Figure 19 Explosion de l'ennemie
  • 20. A partir du niveau 3 les ennemis commencent à tirer des projectiles et leurs vitesses de déplacement s’augmente. L’apparition de l’ennemiBoss se fait petit à petit avec un affichage d’un bar en bas à droite qui affiche Health de l’ennemiBoss. Figure 20 Tir des projectiles par l'ennemie Figure 21 Entrée du BossEnnemie
  • 21. L’explosion de l’ennemieBoss : Les PowerUps : Figure 22 Explosion de l'ennemieBoss
  • 22. Quand la partie est finie un GameOver s’affiche sur l’écran avec une petit fenêtre qui indique le score atteint et le nom du joueur. Figure 23 GameOver Figure 24 Score Final
  • 23. Conclusion 8. Apport du projet a. Travail en groupe Une des plus grosses difficultés tout au long du projet reste à nos yeux le travail en groupe. Parce que nous possédons des aptitudes déférentes, des intérêts différents pour la conception, la programmation ou encore la rédaction, il a fallu s'organiser dès le début pour déléguer les tâches à chacun et définir précisément la politique de développement (concepts et outils utilisés, style du code, etc.) pour que la mise en commun se fasse le plus simplement possible. Nous avons tous les deux encourager l'autre dans les moments difficiles (compilations échoués, erreurs mystérieuses), et partager nos réflexions sur le développement du projet. a. Outils manipulés Ce projet a aussi été l'occasion pour nous d'’enrichir nos connaissances dans le langage Java, de nous familiariser avec la programmation graphique, le modèle vue- contrôleur, mais aussi de se construire un environnement de développement efficace et adapté à nos besoins. Nous avons utilisé pour ce projet :  Microssoft Office Word 2016 pour la rédaction de rapport.  Adobe Photoshop CC 2014 pour la manipulation des images.  Audacity pour le traitement de la musique.  ArgoUML pour les diagrammes UML.
  • 24. Annexes Annexe 1 Figure 25 Diagrammes de classes
  • 25. Sitographie http://www.kilobolt.com/tutorials.html un tutorial pour développer des jeux vidéo en java. http://www.deviantart.com la référence pour tous les images utilisées dans le projet. https://github.com un service web d'hébergement et de gestion de développement de logiciels, utilisant le logiciel de gestion de versions Git. http://stackoverflow.com la référence pour toute sorte d’erreurs. https://www.google.com/ recherches, documentations.
  • 26. Fin SAOUDI Anas WAFDI Ahmed 30/04/2016