PROGRAMME ANDROID. I) Création d une activité réagissant au click comme un bouton



Documents pareils
Créer des applications Android

TP SIN Programmation sur androïde Support : eclipse

Programmation Mobile Android Master CCI

Gestion des différentes tailles d écran

TP au menu «UI ANDROID»

Programmer en JAVA. par Tama

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Auto-évaluation Programmation en Java

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

SOMMAIRE

Projet Android (LI260) Cours 2

Programmation des applications mobiles avec Android. 1 Inspiré du cours de Olivier Le Goaer

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Développement sous Android

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

TP1 : Initiation à Java et Eclipse

Programmation Android L3 informatique

Développement Logiciel

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Desktop Intégration. Rémi Forax

Les fondamentaux du développement d applications Java

Outils, langage et approche Android Une introduction. Nicolas Stouls lyon.fr

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

HMI target Visu / PLC HMI. Pour réaliser une interface homme machine avec PLC control

Warren PAULUS. Android SDK et Android x86

De Java à Android version 0.1

La programmation orientée objet et le langage C++

Interfaces graphiques avec l API Swing

Encore plus de widgets et de conteneurs

Plan du cours. Historique du langage Nouveautés de Java 7

as Architecture des Systèmes d Information

Dans l idéal, ceci devrait être fait en amont pour chaque image envoyée sur l espace de stockage de votre site internet.

Développement sous Android

Unity. Moteur de jeu 3D et 2D. Cross platform: Windows, Mac, Linux, ios, Android, Blackberry, Xbox, Playstation, Wii

Objets et Programmation. origine des langages orientés-objet

Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184. Frédéric BERTIN

Cours de Programmation Impérative: Zones de mémoires et pointeurs

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Anne Tasso. Java. Le livre de. premier langage. 6 e édition. Groupe Eyrolles, 2000, 2002, 2005, 2006, 2008, 2010, ISBN :

Flux de données Lecture/Ecriture Fichiers

Flex. Lire les données de manière contrôlée. Programmation Flex 4 Aurélien VANNIEUWENHUYZE

Programmation avec des objets : Cours 7. Menu du jour

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Tutorial pour une application simple

Langage Java. Classe de première SI

Riddle Blocks. Jeu sous Android. - Yann Bertrand. Membres de l'équipe : - Clément Guihéneuf TS5. - Guillaume Renotton TS4

TD3: tableaux avancées, première classe et chaînes

ACTIVITÉ DE PROGRAMMATION

Education Delivery Intelligent Tool

PROGRAMMATION PAR OBJETS

TUTORIEL PAINTPOT. Louise Henninot - Anne- Cécile Patou - Julie Roquefort

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

1.3 Gestion d'une application

Certificat Big Data - Master MAthématiques

Module Architecture des systèmes mobiles : Android première partie Didier FERMENT - UPJV

DÉVELOPPEMENT ANDROID

pas à pas prise en main du service sur le web Le Cloud

Travaux Pratiques de Commande par ordinateur 1 TRAVAUX PRATIQUES

Le langage C. Séance n 4

Chapitre 10. Les interfaces Comparable et Comparator 1

Tutoriel Android - TP de prise en main

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

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

Premiers Pas en Programmation Objet : les Classes et les Objets

Corrigé des exercices sur les références

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Android 101. Rémi Forax

Découvrir l'ordinateur (niveau 2)

L environnement de travail de Windows 8

Mode d emploi. Félicitations pour votre achat de la tablette Viewpia TB-107. Nous vous remercions pour votre confiance d acheter notre produit!

L espace de travail de Photoshop

Notions fondamentales du langage C# Version 1.0

Gestion distribuée (par sockets) de banque en Java

Chapitre 4 Pierre, papier, ciseaux

Java 7 Les fondamentaux du langage Java

Web Tier : déploiement de servlets

AVerMedia CM3000 Manuel d utilisation

GESTION DU LOGO. 1. Comment gérer votre logo? Format de l image Dimensions de l image Taille de l image 9

Leçon N 5 PICASA Généralités

Création du projet : 1 sur 13

Tutoriel Android. Pour démarrer la programmation d'applications Android

Programmation par les Objets en Java

INITIATION AU LANGAGE JAVA

Héritage presque multiple en Java (1/2)

Les pré-requis pour créer un.ave pour Android

Cahier Technique. «Développer une application intranet pour la gestion des stages des étudiants» Antonin AILLET. Remi DEVES

Programmation Par Objets

ENVOI EN NOMBRE DE SMS

Terminaux Mobiles Communicants

Réalisation d un diaporama en haute définition avec. Adobe Premiere Elements 3.0 ou Adobe Premiere Pro 2.0. Encodage pour Internet

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Indiquer l'espace libre sur le disque dur

Android UIThread, Thread, Handler et AsyncTask

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Logiciel libre, OpenMeetings permet de créer ou simplement de participer à des conférences en ligne.

Android et le Cloud Computing

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski

Transcription:

PROGRAMME ANDROID Que ce soit de la création de jeux, de l informatique de gestion toute la problématique lorsque on tente de comprendre comment fonctionne tous les jeux va être de dégager, les différents objets qui vont composer le jeu et de créer un framework qui va permettre d encapsuler les tâches communes à tous les jeux pour ne pas avoir a refaire les mêmes programmes gérant les aspects techniques tous le temps. Un jeu est constitué de différents objets : Un objet gérant le rendu des jeux (graphiques, audio) Un objet gérant le graphique Un objet gérant les sons et l audio I) Création d une activité réagissant au click comme un bouton package com.helloworld; //Importation des classes indispensables au lancement de l activité. import android.app.activity; import android.os.bundle; import android.view.view; import android.widget.button; // Création de la classe comme heritant d une activité et implémentant un listener qui va réagir aux clics de souris public class HelloWorldActivity extends Activity implements View.OnClickListener { //Définition de deux propriétés un objet Button et un objet de type primitive ici un entier Button button; int touchcount; //Méthode executé au lancement de l activité qui va initialiser le contexte du programme sur le téléphone public void oncreate(bundle savedinstancestate) { //Initialisation de l activité super.oncreate(savedinstancestate); // Création de l objet Button button = new Button(this); //Définition du libéllé du bouton button.settext( "Touch me!" ); //Association du listener au button button.setonclicklistener(this); //Le bouton va correspondre à la vue setcontentview(button); //Méthode qui sera execute à chaque clic sur le bouton public void onclick(view v) { //Incrémentation du nombre entire a chaque clic touchcount++; //Changement du libéllé du bouton après chaque clic button.settext("touched me " + touchcount + " time(s)");

2) Interface pour gérer les entrées via le clavier et l écran et l orientation de l écran On peut utiliser l écran tactile du téléphone pour envoyer des commandes au téléphone, ou le clavier egalement. On va définir un interface qui va permettre de définir les propriétés et les méthodes liés aux événements de l écran tactile ou des touches clavier ou l orientation de l écran. Cette interface une fois qu il sera impplémenté permettra de gérer les touches clavier, écran et le changement d orientation de l appareil ce qui est très utile pour les jeux. import java.util.list; //Ici on définit l interface public interface Input { // Ici la classe statique gérant les événements clavier public static class KeyEvent { // La propriété touché enfoncé ou relaché public static final int KEY_DOWN = 0; public static final int KEY_UP = 1; // Les propriétés définissant le type de la touché le code associé à cette touché et le caractére qu elle représente public int type; public int keycode; public char keychar; //Ici la classe statique gérant les événements lié à l écran tactile public static class TouchEvent { //Index appuyant sur l écran public static final int TOUCH_DOWN = 0; //Index relevé public static final int TOUCH_UP = 1; //index se déplacant sur l écran public static final int TOUCH_DRAGGED = 2; //definition du type de l action, des coordonnées de l index, et du numéro de pointer en supposons que plusieurs points peuvent être activés sur l écran. public int type; public int x, y; public int pointer; // Nous définissons les methodes gérant les evenements sur l écran tactile et le clavier, la touche est elle pressé, l index appuie t il sur l écran,récupération de la coordonnée X et de la coordonnée Y, récupération des éléments permettant de connaître l orientation de l écran public boolean iskeypressed(int keycode); public boolean istouchdown(int pointer); public int gettouchx(int pointer); public int gettouchy(int pointer); public float getaccelx(); public float getaccely(); public float getaccelz(); //Définition de liste permettant de gérer les événements de l écran tactile ainsi que celle du clavier public List<KeyEvent> getkeyevents(); public List<TouchEvent> gettouchevents();

3) Interface pour gérer la lecture et ecriture de fichiers Cette interface permet de définir les méthodes qui permettront de lire et d écrire dans des fichiers, on pourra ainsi récupérer des fichiers images, de texte, de son, de vidéo etc import java.io.ioexception; import java.io.inputstream; import java.io.outputstream; public interface FileIO { //Ici on lit les fichiers situés dans le dossier asset public InputStream readasset(string filename) throws IOException; //Ici on lit les fichiers texte (image, musique, vidéo) public InputStream readfile(string filename) throws IOException; //Ici on écrit dans un fichier public OutputStream writefile(string filename) throws IOException; 4) Interface pour gérer les fichiers de musique sur disque //On définit les méthodes qui vont permettre de jouer un fichier de musique que l on aura préalablement récupéré du dossier assetr public interface Music { //On joue le fichier, on l arrête, le met en pause, on déroule le fichier en boucle, au met la gestion du volume en place, on vérifie si le fichier est en lecture, est stoppé est lu en boucle, on libére la mémoire. public void play(); public void stop(); public void pause(); public void setlooping(boolean looping); public void setvolume(float volume); public boolean isplaying(); public boolean isstopped(); public boolean islooping(); public void dispose(); 5) Interface pour gérer un son en mémoire //Ici on définit un interface avec des méthodes pour gérer un son en mémoire, comme des bruits pour les jeux, on définit le volume et on libére la mémoire. public interface Sound { public void play(float volume);,,, public void dispose(); 5) Interface pour gérer les graphiques

Cette interface va permettre de récupérer des parties d un graphique pour les afficher à l écran et gérer des actions, on pourra ainsi définir un scénario avec tous les éléments de ce scénario sur le même graphique et on ne récupérra alors que les parties qui nous intéressent //Ici on définit un interface permettant de gérer les graphiques c'est-à-dire l affichage à l écran d images bitmap. public interface Graphics { //On définit le format d affichage des images public static enum PixmapFormat { ARGB8888, ARGB4444, RGB565 //On définit un nouveau graphique sur la base d un fichier image qui aura été récupéré et en considérant une resolution des couleurs public Pixmap newpixmap(string filename, PixmapFormat format); // On réinitialise la couleur public void clear(int color); //Pour représenter un pixel public void drawpixel(int x, int y, int color); //Pour dessiner une ligne public void drawline(int x, int y, int x2, int y2, int color); //Pour dessiner un rectangle public void drawrect(int x, int y, int width, int height, int color); //Pour dessiner une portion d une image public void drawpixmap(pixmap pixmap, int x, int y, int srcx, int srcy, int srcwidth, int srcheight); //Pour dessiner une image entiéren public void drawpixmap(pixmap pixmap, int x, int y); //Récuperer la taille et la largeur d une image public int getwidth(); public int getheight(); 6) Interface pour gérer les Pixmap Cette interface va nous permettre de définir les méthodes permettant de gérer les pixmap import com.badlogic.androidgames.framework.graphics.pixmapformat; public interface Pixmap { public int getwidth(); public int getheight(); public PixmapFormat getformat(); public void dispose(); 7) Fonctionnement général du framework de jeu Le fonctionnement général du framework de jeux que nous allons batir va être le suivant. 1) Dans une premiere etape il faut définir l objet qui va gérer la fenêtre et les composants a afficher 2) Dans une autre etapes il faut définir un objet qui va gérer les entrés (clavier, ecran tactile, acceleremotre)

3) Dans une autre étape il faut définir un objet qui va gérer les graphiques 4) Dans une autre étape il faut définir un objet qui va gérer l audio 5) Ensuite il faut définir un objet qui va gérer le menu principal 6) On enregistre le temps initial 7) On calcule le délai entre le temps actuel et le temps de la derniére image 8) On enregistre le temps actuel 9) On met à jour l objet ecran avec les entrée au clavier et à l écran 10) On affiche le contenu de la mise à jour avec les éléments graphiques, audio 11) On libére les ressources createwindowanduicomponent(); Input input = new Input(); Graphics graphics = new Graphics(); Audio audio = new Audio(); Screen currentscreen = new MainMenu(); Float lastframetime = currenttime(); while(!userquit() ) { float deltatime = currenttime() lastframetime; lastframetime = currenttime(); currentscreen.updatestate(input, deltatime); currentscreen.present(graphics, audio, deltatime); cleanupresources(); 8) L interface de jeu Cette interface de jeu va permettre de récupérer, les touches du clavier et sur l écran tactile. Les fichiers en entrée ou en sortie du jeu. Les éléments graphiques du jeu, l audio de gérer l écran. public interface Game { public Input getinput(); public FileIO getfileio(); public Graphics getgraphics(); public Audio getaudio(); public void setscreen(screen screen); public Screen getcurrentscreen(); public Screen getstartscreen(); 9) La classe abstraite ecran Cette classe permet de gérer l écran, on définit un constructeur qui prend pour paramétre un objet game et des méthodes qui vont permettre la mise à jour, le rendu, mettre en pause de reprendre et de libérer les ressources, le rendu et la presentation à l écran dépende d un paramétre délai. public abstract class Screen { protected final Game game; public Screen(Game game) { this.game = game; public abstract void update(float deltatime); public abstract void present(float deltatime); public abstract void pause(); public abstract void resume(); public abstract void dispose();

10) Exemple de jeu simple avec déplacement d un point sur l ecran //Nous définissons une classe qui herite de la classe screen public class MySuperAwesomeStartScreen extends Screen { //Nous définissons deux objets un objet de type Pixmap et un entier Pixmap awesomepic; int x; // Nous définissons le constructeur de la classe public MySuperAwesomeStartScreen(Game game) { // Nous faisons appel au constructeur de la classe parente Screen,pour définir un objet screen prenant comme paramétre un objet Game. super(game); //Nous récupérons la propriété graphiques de l objet Game, et nous faisons appel à la méthode newpixmap de cet objet qui va permettre de récupérer un fichier png, qui va s afficher avec un certain format graphique awesomepic = game.getgraphics().newpixmap("data/pic.png", PixmapFormat.RGB565); //Cette méthode va permettre de faire une mise à jour de la coordonnée sur l axe des abscisses chaque deltatime public void update(float deltatime) { x += 1; if (x > 100) x = 0; //Cette méthode va permettre d afficher à l écran les elements a chaque deltatime public void present(float deltatime) { game.getgraphics().clear(0); game.getgraphics().drawpixmap(awesomepic, x, 0, 0, 0, awesomepic.getwidth(), awesomepic.getheight()); public void pause() { // nothing to do here public void resume() { // nothing to do here public void dispose() { awesomepic.dispose(); L element <manifest> On peu indiquez le code de android utilise, le nom de la version, le support de stockage de l application <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.helloworld" android:versioncode="1" android:versionname="1.0"

android:installlocation="preferexternal">... </manifest> L element <application> <application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true">... </application> L element <activite> On définit toutes les activités android avec celle qui sera lancé la premiére <activity android:name=".mrnomactivity" android:label="mr. Nom" android:screenorientation="portrait"> android:configchanges="keyboard keyboardhidden orientation"> <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> <activity android:name=".mysubactivity" android:label= Sub Activity Title" android:screenorientation="portrait"> android:configchanges="keyboard keyboardhidden orientation"/> L element <uses-permission> <uses-permission android:name="string"/> L element <uses-feature> <uses-feature android:name="string" android:required=["true" "false"] android:glesversion="integer" /> <uses-feature android:name="android.hardware.touchscreen.multitouch" android:required="true"/> <uses-feature android:glesversion="0x00020000"android:required="true"/> <uses-feature android:name="android.hardware.usb.host" android:required="false"/> L element <uses-sdk> <uses-sdk android:minsdkversion="3" android:targetsdkversion="13"/> <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android=http://schemas.android.com/apk/res/android package="com.badlogic.awesomegame" android:versioncode="1" android:versionname="1.0" android:installlocation="preferexternal"> <application android:icon="@drawable/icon" android:label="awesomnium" android:debuggable="true"> <activity android:name=".gameactivity" android:label="awesomnium" android:screenorientation="landscape" android:configchanges="keyboard keyboardhidden orientation"> <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> </application> <uses-permission android:name="android.permission.write_external_storage"/> <uses-permission android:name="android.permission.wake_lock"/> <uses-sdk android:minsdkversion="3" android:targetsdkversion="9"/> </manifest>