Initialisation au développement des jeux vidéo

Slides:



Advertisements
Présentations similaires
Introduction à l’automatisation -ELE3202- Cours #8: Le modèle d’état Enseignant: Jean-Philippe Roberge Jean-Philippe Roberge - Mars 2011.
Advertisements

Portail Sdin Méthodes pour la contribution du portail SDIN Mars 2013.
Introduction à l’automatisation -ELE3202- Cours #10: Le modèle d’état (2ième partie) & transformée en z Enseignant: Jean-Philippe Roberge Jean-Philippe.
Introduction à la programmation objet Langage Java
TP 7.1 synchronized et join Écrire un programme Java qui crée 1000 threads et maintient un compteur nb du nombre de threads créés jusque-là. Le thread.
(Classes prédéfinies – API Java)
C.
TD 1 IJA Introduction Objet, méthode, attribut Classe, instance
Introduction à la programmation (420-PK2-SL) cours 15 Gestion des applications Technologie de linformation (LEA.BW)
Présentation des tables des matières j puis appuyez sur F5 ou cliquez sur Diaporama > Du début. Pour commencer le cours, dans la barre des messages, cliquez.
12 novembre 2012 Grégory Petit
Les étapes de développement d’un jeu vidéo
PRISE EN CHARGE DES FUITES URINAIRES
Principes de programmation (suite)
Développement Mobile : Android
Programmation orientée objet
Introduction à la programmation (420-PK2-SL) cours 12 Gestion des applications Technologie de linformation (LEA.BW)
PROJET DATELIEU 20 MARS 2012LCP SALLE B105 création du site internet avec Weebly.
Windows 7 Administration des comptes utilisateurs
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
Les méthodes en java Une méthode est un regroupement d’instructions ayant pour but de faire un traitement bien précis. Une méthode pour être utilisée.
17/05/2014Une voirie pour tous – Dijon – 1/12/20111 Une voirie pour tous 1 er décembre 2011.
Langage Oriente Objet Cours 4.
Apprentissage des mathématiques Résolution de problèmes
Atelier Gaming Présentation générale des jeux Android -Marchés de lAndroid -Top Jeux Android -Lidée du jeu -Architecture du jeu -The Game Loop Réalisé
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
77 Utilisation des classes (suite). 7-2 Objectifs A la fin de ce cours, vous serez capables de : Définir des méthodes surchargées dans une classe Fournir.
Classes abstraites et Interfaces
1 Objectifs de ce cours (I21) Cours JAVA (I21) -Licence 1 Semestre 2 / Y.Laborde Résumé du cours précédent.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 5 – Héritage, Interfaces et Listes génériques.
Introduction à la programmation objet Langage Java
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
COURS DE PROGRAMMATION ORIENTEE OBJET :
99 Réutilisation du code grâce à l'héritage. 9-2 Objectifs À la fin de ce cours, vous serez capables de : Définir l'héritage Utiliser l'héritage pour.
Plan cours La notion de pointeur et d’adresse mémoire.
1 Ville de SAINT QUAY PORTRIEUX - Aménagement urbain du quartier de Portrieux Présentation des premières esquisses T324 - Réunion publique du 15 novembre.
Assemble Générale du Samedi 17 septembre 2011 à 19H00 Bilan 2010/2011 et Perspectives Saison 2011/ /09/20111.
Exploration de la programmation android Formation Assurer par: Club FreeWays Réalisé par: BOUHJJA Lamia.
Pourquoi est-il nécessaire d'installer de nouveaux logiciels sur votre ordinateur ? J'exclus de cette présentation l'installation de nouveaux matériels.
LIFI-Java 2004 Séance du Mercredi 22 sept. Cours 3.
La notion de type revisitée en POO
Animation "mini tennis" 05/10/2011
11/04/ L'héritage Cours 7 Cours 7.
7ième Classe (Mardi, 24 novembre) CSI2572. Devoir 3 ?
Interfaces graphiques. Composants d'interface utilisateur graphique (GUI) 1 Bibliothèques Awt et Swing Procédures communes pour l'utilisation de ces clases.
Tutorat en bio-informatique
Les classes présenté par: RAHMOUNE RIME / ZEKRI SELMA.
Les classes et les objets Les données finales class A { … private final int n = 20 ; // la valeur de n est définie dans sa déclaration … } class A { public.
POWERPOINT.
PHP 6° PARTIE : LES SESSIONS 1.Introduction 2.Identificateur de session 3.Variables de session 4.Client / Serveur 5.Principe 6.Ouverture de session 7.Enregistrement.
Héritage H. Batatia. plan Notion (que signifie l’héritage) Ecriture en java Héritage multiple (interdit) Instanciation (partie propre et partie héritée)
Cours 4 (14 octobre) Héritage. Chapitre III Héritage.
Héritage Conception par Objet et programmation Java
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 2 – Java Premiers pas Master 1 SIGLIS1 Java Lecteur - Chapitre 2 - Java Premiers Pas.
GRAPHISME PAR ORDINATEUR
Applications Internet Cours 3 21 janvier 2010 Cours 3 21 janvier 2010.
Vous voici dans notre site « laboratoire » pour la démonstration AJOUTER UNE PAGE Cliquez sur ENTREZ ICI pour accéder à la partie administration.
Application sous Androïd
Faire déplacer le personnage à l’aide des flèches du clavier Il y a plusieurs façon de procéder selon nos attentes, mais en voici une qui est très simple:
TP n°3 – Implantation d’un atelier de mécanique avec le logiciel Impact   Une entreprise de décolletage souhaite aménager une zone stockage produit fini.
FLASH MX : séance 1 Vivien FILIPPINI Jeanne VERRE Exposé SI28.
Dreamweaver le retour Avec Les Formulaires Les Calques
Télécharger :
Formation.
Dreamweaver 2 Feuilles de Style CSS Formulaires Calques Comportements
PRESENTATION FLASH 2 MAURIN Marion BERETTI Vincent.
LES CLASSES ET LES OBJETS
Les vues O.Legrand G.Seront. Les vues Dans Android, une ihm est composée de vues. Ces vues.
Transcription de la présentation:

Initialisation au développement des jeux vidéo Atelier Gaming Initialisation au développement des jeux vidéo Android Réalisé par: Hidri Jouda - Haj Ayache Souhail - Elj Asma Présenté par: Hidri Jouda – Haj Ayache Souhail

Plan de la présentation Actualité: Game Command App Quelques jeux de GameLoft Initialisation au développement des jeux vidéos: Notions de base Afficher une image sur l’écran: la class SurfaceView Bouger une image sur l’écran: Thread et Loop Animer une image: Sprite et frame Gestion des évènements: onTouchEvent Conclusion 30/11/2011

Actualité… L'ouverture Android OS a permis l’épanouissement d’une énorme quantité de créativité.  Des centaines de jeux sur le marché! Mais, il est souvent terriblement difficile pour les utilisateurs moyens de trouver des applications qui fonctionnent bien sur leurs appareils spécifiques. Comment savoir quels jeux sont optimisés? 30/11/2011

Solution… Game Command Proposée par Qualcomm. Disponible à partir de Janvier 2012. Gratuite pour les terminals Qualcomm. permettra aux propriétaires des téléphones et tablettes tournant cette puce de Qualcomm d’avoir une liste des meilleurs jeux qui sont garantis de marcher sur leurs propres équipements. 30/11/2011

Game Command On trouvera une liste de jeux marqués « enhanced » ou « featured » qui vont profiter du matériel special. 30/11/2011

Quelques jeux de GameLoft 30/11/2011

9mm 30/11/2011

Genre: Action Sortie le 11 Octobre Caractéristiques: Prix: $6,99 Guerre des gangs Possibilité de jouer en ligne avec des amis Prix: $6,99 Note (sur 5) : 4,5

30/11/2011

GT Racing 3D 30/11/2011

Genre: Course Sortie le 11 Novembre Caractéristiques: Prix: $4,99 Plus de 100 voitures Grande variété de pistes Multi-joueurs en local et en ligne jusqu' ‘à 6 personnes Prix: $4,99 Note (sur 5) : 4,7 30/11/2011

30/11/2011

Let ‘s Golf 3 30/11/2011

Genre: Sport Sortie le 11 Novembre Caractéristiques: Prix : free 6 endroits fantastiques 4 joueurs peuvent s'affronter en ligne, en local (Wi-Fi ou Bluetooth) ou sur le même appareil.Multi-joueurs en local et en ligne jusqu' ‘à 6 personnes Prix : free Note (sur 5) : 3,6 30/11/2011

30/11/2011

Les notions de base Pour développer un jeux vidéo, qu’il soit un simple jeu d’arcade ou bien un jeu 3D avancé, trois services sont nécessaires: le graphisme (permettant de dessiner des images sur l’écran) 30/11/2011

Les notions de base la gestion du temps (permettant la création d’animations) 30/11/2011

Les notions de base la gestion des évènements (permettant de traiter des informations provenant de l’entrée, input)  Lors de cette présentation, on parlera de ces trois notions. 30/11/2011

Afficher une image sur l’écran: SurfaceView -Pour afficher une image sur l’écran, on aura besoin de la classe SurfaceView qui hérite de la classe View. -La classe SurfaceView, ré implémentera la méthode onDraw via @override, qui est responsable du rendering (le dessin de l’image sur l’écran). -D’un autre côté, SurfaceView implémentera l’interface SurfaceHolder, qui est responsable du control de la surface (largeur, changement, évènements …). 30/11/2011

Implémentation de la méthode onDraw: @Override        protected void onDraw(Canvas canvas) {              canvas.drawColor(Color.BLACK);              canvas.drawBitmap(bmp, 10, 10, null);        } Pour dessiner une image, on aura également besoin de la classe Canvas. Canvas, est un comme un rectangle dans lequel l’image sera dessinée. On aura besoin de préciser la source de l’image (Bitmap bmp), la position de l’image (l’abscisse et l’ordonné) 30/11/2011

Comment récupérer la source de l’image? 30/11/2011

Toute image, doit être placée dans le dossier drawable Toute image, doit être placée dans le dossier drawable . L’image doit être de type PNG. A chaque fois on ajoute une nouvelle image dans ce dossier, la classe R.drawable se met à jour, dans le fichier R.java. 30/11/2011

L’image icon.png, est une image existante dans le dossier drawable par défaut. Si on ajoute une image ball.png, on va remarquer que ce fichier va se mettre à jour automatiquement et ajouter la ligne soulignée. Pour chaque image, on a un identifiant unique portant son nom. Cet identifiant est un entier, permettant de retrouver la source de l’image. Voici un exemple d’une classe R public final class R { public static final class attr } public static final class drawable public static final int ball=0x7f020000; public static final int icon=0x7f020002; public static final class layout public static final int main=0x7f030000; public static final class string public static final int app_name=0x7f040001; public static final int hello=0x7f040000; 30/11/2011

Il suffit après de déclarer la variable bmp de type Bitmap Bitmap bmp Et l’extraire à partir de sa source:  bmp = BitmapFactory.decodeResource(getResources(), R.drawable.icon); Ensuite appeler la méthode onDraw pour afficher notre image:        @Override        protected void onDraw(Canvas canvas) {              canvas.drawColor(Color.BLACK);              canvas.drawBitmap(bmp, 10, 10, null);        } 30/11/2011

30/11/2011

Bouger une image sur l’écran: Thread et loop. Dans chaque jeux, il existe la notion de boucle. Sous Android, on parle plutôt de Loop. Pour un loop, on doit créer un Thread à part qui s’occupe d’un côté de mise à jour continue des variables et d’un autre côté de l’affichage des images. 30/11/2011

Exemple: 30/11/2011

On devra créer une classe qui hérite de la classe Thread On devra créer une classe qui hérite de la classe Thread. Cette classe s’occupera du loop. Cette classe s’occupera de la gestion du temps et de ce qu’on appelle FPS et UPS: Frame per second: combien de fois la méthode onDraw sera appelée par seconde. Update per second: combien de fois la méthode update sera appelée par seconde. 30/11/2011

Animer une image: Sprite et frame Sprite est une image 2D. On peut créer une classe qui s’occupe de nos images. À chaque fois on a besoin d’insérer une nouvelle image, on peut instancier cette classe qui s’occupera de son chargement, mise à jour et affichage. 30/11/2011

- On peut insérer une image sur l’écran en précisant ses coordonnées - On peut insérer une image sur l’écran en précisant ses coordonnées. - Mais il est également possible de le faire en passant par la classe Rectangle. - On précise la partie à afficher de l’image (rectangle SRC) et la partie de l’écran dans laquelle on veut insérer l’image (rectangle DST) 30/11/2011

En modifiant successivement les coordonnés du rectangle SRC, on pourra avoir une animation. Exemple: On affichant successivement l’une de ces trois images, on aura l’impression que cette image est animée. 30/11/2011

Cette technique nous épargnera également le chargement d’une nouvelle image à chaque fois on a besoin de changer l’image affichée. Egalement, l’appel de la méthode onDraw en lui donnant deux paramètres de type Rectangle, nous permet de créer un zoom (que ce soit zoom in ou zoom out, selon le rapport de SRC et DST) 30/11/2011

Gestion des évènements: OnTouchEvent La gestion des évènements, ou bien le Events Handeler est un moyen pour déclencher une action à chaque fois il y a une modification au niveau de l’input: mouvement du doight sur l’écran par exemple. A chaque fois il y a un clique sur l’écran, une méthode est appelée OnTouchEvent. 30/11/2011

Cette méthode prend une variable en paramètre de type Event. On pourra mettre dans le corps de cette méthode toutes les actions que nous souhaitons exécuter au moment de cet évènement. Cette méthode prend une variable en paramètre de type Event. OnTouchEvent(Event e){} 30/11/2011

Cette classe possède deux accesseurs indiquant la position du clique: getX() et getY(); 30/11/2011

Exemple d’utilisation: Nous souhaitons changer la position de l’image vers la position du clique: 30/11/2011

Le déplacement vertical est la différence des deux ordonnés Le déplacement horizontal est la différence des deux abscisses. 30/11/2011

On a besoin de savoir le pas (la vitesse) de l’avancement vertical et l’avancement horizontal lors de chaque boucle. X+=? Y+=? 30/11/2011

On doit éviter de se trouver dans le cas suivant: L’angle de déplacement par boucle doit être le même que l’angle de déplacement total. 30/11/2011

Nous avons l’angle de déplacement et la vitesse principale, et nous avons besoin de la vitesse verticale et la vitesse horizontale: 30/11/2011

Çà donnera les deux lignes suivantes: xSpeed= (float) Math.cos(Math.atan2(depVert, depHor)); ySpeed= (float) Math.sin(Math.atan2(depVert, depHor)); xSpeed *= 5; ySpeed *= 5; 30/11/2011

Et bien sûr, par la suite, on aura seulement besoin de modifier les deux lignes suivantes: X += xSpeed; Y +=ySpeed; 30/11/2011

On a ainsi l’impression que l’image se déplace progressivement vers la position du clique. 30/11/2011

DEMO 30/11/2011

Conclusion Ces notions sont les fondements de base pour créer un jeux vidéo d’une façon générale et un jeu sous android. On trouve les même notions dans tous les langages capables de créer un jeu. D’autres notions sont également intéressantes comme le multijoueur qui permet à deux personnes ou plus de jouer ensemble et la notion d’intelligence artificielle qui permet de jouer contre un adversaire fictif. 30/11/2011

Merci 30/11/2011