DUPIN CASSONE. RAPPORT DE PROJET Conception d un jeu- vidéo

Documents pareils
Animation Shop PREAMBULE... 2 CONTRAINTE... 2 CREER UNE ANIMATION... 2 AJOUTER DES IMAGES... 3 ENREGISTRER UNE ANIMATION... 3

Installation 1K-Serveur

LES ACCES ODBC AVEC LE SYSTEME SAS

Notice d'utilisation Site Internet administrable à distance

Utilisation du BDE pour la maintenance des fichiers DBF de l'application TopoCad:

TUTORIEL D INSTALLATION D ORACLE ET DE SQL DEVELOPPER TUTORIEL D INSTALLATION D ORACLE...1 ET DE SQL DEVELOPPER...1

Guide de l utilisateur. Faites connaissance avec la nouvelle plateforme interactive de

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

Avertissement : Nos logiciels évoluent rendant parfois les nouvelles versions incompatibles avec les anciennes.

Capture Pro Software. Démarrage. A-61640_fr

Corrigé de l'atelier pratique du module 8 : Implémentation de la réplication

Dispositif Technique

Manuel utilisateur Netviewer one2one

Styler un document sous OpenOffice 4.0

Guide d installation de Gael

Guide d utilisation de PL7 Pro Récupérer ou transférer un programme

Comment Accéder à des Bases de Données MySQL avec Windows lorqu'elles sont sur un Serveur Linux

Comment l utiliser? Manuel consommateur

Saisissez le login et le mot de passe (attention aux minuscules et majuscules) qui vous ont

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

Mise à jour, sauvegarde et restauration de logiciels

ENVOI EN NOMBRE DE SMS

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation

FlashWizard v4.5b PRO

Guide sommaire de TecLocal

Documentation QmailAdmin

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

Notice de fonctionnement DVR H Méthode de Visionnage ESEENET

Corrigé de l'atelier pratique du module 3 : Récupération d'urgence

Documentation Liste des changements apportés

Manuel d'utilisation de l'administration du site Japo.ch - 1

Maintenir Debian GNU/Linux à jour

Un exemple avec WORKSPACE d'interwrite

Créer un publipostage avec Word 2007.

ApiCrypt - Réception des résultats de biologie

2010 Ing. Punzenberger COPA-DATA GmbH. Tous droits réservés.

Publipostage avec Open Office Writer et Open Office Calc (v.3)

PROCÉDURE D'INSTALLATION WINDOWS 7 (32 ou 64 bit)

Page Paragraphe Modification Mise en page du document Le bouton "Format de page" est maintenant "Page"

Créer des étiquettes avec les adresses d'un tableau Calc

ENVOI EN NOMBRE DE SMS

GUIDE D INSTALLATION RAPIDE DEXH264

Tutoriel Prise en Main de la Plateforme MetaTrader 4. Mise à jour : 7/09/

Raja Bases de données distribuées A Lire - Tutoriel

Création de Sous-Formulaires

Logiciel PICAXE Programming Editor

Manuel d utilisation DeveryLoc

PX8048 Convertisseur audio/vidéo VHS vers USB

Module SMS pour Microsoft Outlook MD et Outlook MD Express. Guide d'aide. Guide d'aide du module SMS de Rogers Page 1 sur 40 Tous droits réservés

Aide à la clé pédagogique «Former à la première intervention et à l évacuation»» 2 e édition

Utilisation de la plateforme VIA ecollaboration

Avant-propos FICHES PRATIQUES EXERCICES DE PRISE EN MAIN CAS PRATIQUES

LibreOffice Calc : introduction aux tableaux croisés dynamiques

Formation > Développement > Internet > Réseaux > Matériel > Maintenance

COSWIN MOBILE SERVEUR DE SYNCHRONISATION GUIDE D INSTALLATION

TUTORIEL IMPRESS. Ouvrir Impress cocher «présentation vierge», «suivant» cocher «écran», «suivant» cocher «standard», «créer»

Database Manager Guide de l utilisateur DMAN-FR-01/01/12

Mise en oeuvre d'une base de données mono-utilisateur avec SQLite

Utiliser Reporting Services pour des NewsLetter

Module Com231A - Web et Bases de Données Notion 5 : Formulaires et utilisation des Bases de Données avec PHP

Veuillez noter que vous devez changer de Code d Accès Internet tous les 60 jours pour des raisons de sécurité.

Découverte et prise en main de SWEET HOME 3D

Développement Logiciel

GUIDE D'INSTALLATION DU SYSTEME DE GESTION DE BASES DE DONNEES MYSQL POUR LE PGI EBP

Prise en main du logiciel Smart BOARD

DOSSIER D'UTILISATION

Sommaire. I.1 : Alimentation à partir d un fichier Access (.mdb)...2

Interfaces graphiques avec l API Swing

I. MySQL : Serveur et SGBD

Faire de la déformation interactive avec GIMP

Tutoriel Inscription et utilisation basique d'un blog hébergé chez Blogger.com

Rendre un plan de cours interactif avec Médiator

Comment configurer X-Lite 4 pour se connecter au serveur Voip de Kavkom?

Déclarer un serveur MySQL dans l annuaire LDAP. Associer un utilisateur DiaClientSQL à son compte Windows (SSO)

Gérer, stocker et partager vos photos grâce à Picasa. Janvier 2015

Procédures Stockées WAVESOFT ws_sp_getidtable Exemple : ws_sp_getnextsouche Exemple :... 12

Cours de Génie Logiciel

Réalisez votre propre carte de vœux Éléctronique

Programmation Par Objets

Publication Assistée par Ordinateur

Avec PICASA. Partager ses photos. Avant de commencer. Picasa sur son ordinateur. Premier démarrage

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

MANUEL TBI - STARBOARD

Introduction à Business Objects. J. Akoka I. Wattiau

Déclarer un serveur MySQL dans l annuaire LDAP. Associer un utilisateur DiaClientSQL à son compte Windows (SSO)

ipra*cool v 1.08 guide de l utilisateur ipra*cool v.1-08 Guide de l'utilisateur ipra*cool v

Utilisation de l éditeur.

Formation à distance Powerpoint Réaliser une présentation - FOAD exemples de parcours -

Guide de démarrage Janvier 2012

CONFIGURATION DE L'ACCÈS À DISTANCE POUR LE SYSTÈME D'ENREGISTREMENT VIDÉO NUMÉRIQUE QT17D324SC

Manuel d utilisateur du site de covoiturage «Etucovoiturage»

Introduction 2 - Précaution 2 - Caractéristiques techniques 2 - Contenu 3

Qualité du logiciel: Méthodes de test

Numérisation. Copieur-imprimante WorkCentre C2424

Guide de démarrage rapide

Manuel d'utilisation avec le superviseur ISCANSERVER et le client VEHICLE Network System

SQL Server Administration d'une base de données transactionnelle avec SQL Server Management Studio (édition enrichie de vidéos)

Travaux Pratiques de Commande par ordinateur 1 TRAVAUX PRATIQUES

Transcription:

RAPPORT DE PROJET Conception d un jeu- vidéo 1

Introduction... 3 Conception UML... 4 Diagramme de cas d utilisation... 5 Diagramme de classe... 7 Choix technologiques... 9 Interface graphique... 10 Threads... 11 Timers... 12 SQL... 13 Implémentation... 14 Conception de la fenêtre... 15 Affichage dans la fenêtre... 16 Contrôle du personnage... 17 Animations... 18 Connexion à la base de données... 19 Conclusion... 20 Captures d écran... 21 2

Introduction L objectif du projet est de développer un jeu- vidéo du genre «endless runner» en Java. Le jeu nommé Jump & Roll consiste à faire courir un personnage en lui faisant éviter des obstacles sur son passage tout en le faisant sauter ou rouler. Lorsque le personnage se fait toucher par un obstacle, la partie se termine et le score du joueur s'affiche avec la possibilité de recommencer une partie, regarder le classement des meilleurs joueurs ou quitter le jeu. Pour jouer au jeu, il faut, si ce n'est pas déjà fait, s'enregistrer dans la base de données en créant un compte. Une fois le compte créé, il est possible de se connecter et d'accéder à sa session de jeu. 3

Conception UML 4

Diagramme de cas d utilisation L utilisateur peut s inscrire ou se connecter s il possède déjà un compte. Une fois identifié, il peut démarrer une nouvelle partie ou afficher le classement des meilleurs joueurs. 5

6

Diagramme de classe Le programme dispose de deux classes : Menu et Jeu. 7

8

Choix technologiques 9

Interface graphique Afin de concevoir facilement une interface graphique, il a été décidé de choisir la librairie «Swing» ainsi que d'utiliser l extension WindowBuilder permettant de placer des composants graphiques directement dans une fenêtre contenant l'application. Il est donc très facile de créer des boutons, des labels et autres composants et de les placer sur la fenêtre de l application. 10

Threads Étant donné que le jeu comporte des animations et des déplacements en temps réel il est important d'utiliser des «threads». En effet, Swing repose sur un thread principal pour la gestion de l'affichage. Il a pour objectif de repeindre les différentes parties affichées dans un certains ordres. Il suit donc un algorithme relativement séquentiel pour l'affichage. De ce fait, les opérations liées à l'affichage des composants graphiques sont monothread et toute mise à jour en dehors de ce thread peut avoir un comportement imprévisible. La solution est donc de créer d'autres threads qui géreront les mises à jour graphiques comme les mouvements du personnage et le défilement des obstacles. 11

Timers Les «timers» ont été utilisé pour compter le nombre de points du score toute les deux secondes. Ils sont également utilisé pour définir une vitesse de déplacement des obstacles. Les obstacles se déplaçant pixel par pixel, on défini un changement de position tout les x temps. 12

SQL Afin de pouvoir enregistrer les joueurs ainsi que leur score et de les classer, on utilise une base de données MysQL en utilisant des requêtes. Pour cela nous avons créé une base de données. Lorsque l'utilisateur lance le jeu, il peut s'enregistrer. Si son enregistrement s'est déroulé avec succès il sera enregistré dans la base de données avec un score initialisé à 0 via une requête SQL qui insère les données. L'utilisateur enregistré se connecter en entrant ses identifiants. Une requête SQL se chargera alors de vérifier si l'identifiant et le mot de passe corresponde bien. Pour le classement, on fera des mises à jour dans la base de données lorsque les meilleurs scores d'un joueur change. 13

Implémentation 14

Conception de la fenêtre Pour lancer le jeu, nous allons nous servir dans la librairie SwingUtilities faisant partit de Swing. En effet celle ci permet de créer une fenêtre dans lequel sera affiché le jeu. Pour afficher la fenêtre, nous allons lui définir des paramètres : settitle("run Game"); // titre de l'application setsize(800, 600); // taille de la fenêtre setlocationrelativeto(null); // modification de la taille de la fenêtre desactivé setdefaultcloseoperation(jframe.exit_on_close); // quitter la fenêtre setcontentpane(buildlogin()); // affichage du panel souhaité Dans le code on définit les paramètres essentiels au bon fonctionnement de la fenêtre. 15

Affichage dans la fenêtre Dans le code ci-dessus, on remarque que la dernière ligne contient la fonction buildlogin(). Cette fonction définis un panel qui affichera un contenu (en l occurrence dans cette fonction la page pour s'identifier). On déclare un panel de la façon suivant : JPanel panel = new Jpanel(); // construction d'un nouveau panel panel.setbackground(new Color(135, 206, 250)); // couleur du font du panel panel.setlayout(null); // aucun positionnement d'objets particulier Pour déclarer des objets dans le panel, un procède de la même manière en précisant le panel dans lequel on veut les ajouter. 16

Contrôle du personnage Pour contrôler le personnage, deux touches suffisent : - flèche du haut : sauter - flèche du bas : rouler Pour cela on utilise une la fonction addkeylistener en précisant que les actions se font sur le label représentant le personnage puis on vérifie que la touche enfoncer correspond bien à l'une des deux : // declaration du personnage lcharac = new JLabel(new ImageIcon("perso.png")); // positionnement dans la fenêtre lcharac.setbounds(20, 465, 48, 65); // ajout dans le panel voulu panel.add(lcharac); // focus sur le personnage lcharac.setfocusable(true); // action possible sur le personnage lcharac.addkeylistener(new KeyAdapter() { @Override public void keypressed(keyevent ke) { // JUMP //Si on appuie sur la fleche du haut if (ke.getkeycode() == KeyEvent.VK_UP && activer) { //action sauter } // roll // si on appuie sur la fleche du bas else if (ke.getkeycode() == KeyEvent.VK_DOWN && activer) { //action rouler } 17

Animations Les animations du personnage sont faites à partir de threads permettant ainsi de voir en temps réel les changements d'image. Prenons par exemple l'animation rouler. Le but est de réduire la taille du personnage pour passer en dessous d'un obstacle en faisant défiler quatre images différentes pour donner une impression de roulade tant que le joueur maintient la touche flèche du bas enfoncé : // tant que la touche reste enfoncé le personnage reste en boule while (release) { // mise à jour des dimensions du label collision(48,45); // si la touche reste enfoncé un continu l'animation if (release) { try { // démarage du thread Thread.currentThread(); // changement de la taille du label lcharac.setsize(48, 45); // repositionnement du label lcharac.setlocation(20, 485); // image actuelle du personnage lcharac.seticon(new ImageIcon("perso_r1.png")); // temps d'affichage de l'image actuelle Thread.sleep(100); // temps de l'affichage de l'image } catch (InterruptedException e) { e.printstacktrace(); } } // on répette la condition 4 fois } 18

Connexion à la base de données Pour se connecter à la base de données, on utilise les fonctions de la librairie msql connector ainsi que du driver jbdc mysql puis on procède de la façon suivante : Class.forName("com.mysql.jdbc.Driver"); System.out.println("Driver ok"); try { // Connexion pour WAMP connexion = DriverManager.getConnection("jdbc:mysql://localhost/rungame", ""); "root", } catch (Exception m) { // Connexion pour MAMP connexion = DriverManager.getConnection("jdbc:mysql://localhost:8889/rungame", "root","root"); } System.out.println("Connexion ok"); transmission = connexion.createstatement(); On peut ensuite effectuer des requêtes sql comme ci-dessous : // requête query = "insert into PLAYER(PSEUDO, EMAIL, PASSWORD) "+ "values(\"" + tfregisterpseudo.gettext()+ "\",\"" + tfregisteremail.gettext() + "\",\""+ String.valueOf(tfRegisterPassword.getPassword())+ "\");"; // envoie de la requête transmission.executeupdate(query); // si tout ce passe comme prévu JOptionPane.showMessageDialog(null,"Successfully registered!"); query = "insert into LEADERBOARD(PSEUDO, SCORE) "+ "values(\"" + tfregisterpseudo.gettext()+ "\",0)"; transmission.executeupdate(query); Dans ces requêtes on enregistre les nouveaux joueurs qui s'inscrivent dans les logins ainsi que dans le classement. 19

Conclusion La conception de ce jeu fut un succès. Nous avons pu apprendre comment fonctionne les animations 2D dans les jeux-vidéo et de les gérer à l'aide des threads. Nous avons également pu nous expérimenter dans les interfaces graphiques et la gestion de base de données. 20

Captures d écran 21

22

23

24

25

DUPIN CASSONE 26