GameModel. Modèle crée à la création de l application. public class GameModel {

Documents pareils
Projet Android (LI260) Cours 2

Créer des applications Android

Programmation Android L3 informatique

Programmation mobile avec Android

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

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

TP SIN Programmation sur androïde Support : eclipse

1.3 Gestion d'une application

Tutoriel Android - TP de prise en main

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

TP au menu «UI ANDROID»

Warren PAULUS. Android SDK et Android x86

TP2 : Client d une BDD SqlServer

De Java à Android version 0.1

SOMMAIRE

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

Introduction ANDROID

Les fondamentaux du développement d applications Java

Développement Android. J.-F. Couchot

Tutorial pour une application simple

Encore plus de widgets et de conteneurs

Projet de programmation (IK3) : TP n 1 Correction

Développement sous Android

Android Publish/Subscribe, GCM, Google Cloud Messaging : une introduction

Programmer en JAVA. par Tama

Développement d'applications pour Android. M. Dalmau IUT de Bayonne Pays Basque

Corrigé des exercices sur les références

Education Delivery Intelligent Tool

Développement web et mobile

Android 101. Rémi Forax

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

APPLICATIONS JAVA. 1. Android. Développement d'activités Java sous Android. Android Partie I. L'architecture du système Android. Application Android

Architectures Mobiles

Génie Logiciel et Interaction Homme-Machine PROJET UCAMPUS

Épisode 2 : Les outils de développement Alain Menu édition 2.1, septembre 2013

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

Package Java.util Classe générique

Android UIThread, Thread, Handler et AsyncTask

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

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

Un ordonnanceur stupide

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

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

Alfstore workflow framework Spécification technique

Les connexions sans fil avec Android. JMF (Tous droits réservés) 1

TP1 : Initiation à Java et Eclipse

as Architecture des Systèmes d Information

Programmation Par Objets

Machines virtuelles fonctionnelles (suite) Compilation ML Java

Programmation Réseau. Sécurité Java. UFR Informatique jeudi 4 avril 13

Programmation avec des objets : Cours 7. Menu du jour

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

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

Création d un service web avec NetBeans 5.5 et SJAS 9

Programme Compte bancaire (code)

1. Installation d'un serveur d'application JBoss:

2010/2011 [PROJET TEXT TO SPEECH] Génie Logiciel des Interactions Homme-Machine. Germain Costenobel Pierre Barois

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

.NET - Classe de Log

Android et le Cloud Computing

TD/TP 1 Introduction au SDK d Android

Bases de données et fournisseurs de contenu

F. Barthélemy. 17 mai 2005

Une introduction à la technologie EJB (2/3)

Construire des plug-ins pour SAS Management Console SAS 9.1

Langage Java. Classe de première SI

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

Bases Java - Eclipse / Netbeans

Android en action. Abdelkader Lahmadi Université de Lorraine

Auto-évaluation Programmation en Java

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

Serveur d'archivage 2007 Installation et utilisation de la BD exist

Premiers Pas en Programmation Objet : les Classes et les Objets

Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée

Environnements de développement (intégrés)

Développement d un logiciel de messagerie instantanée avec Dotnet (version simplifiée)

TD/TP PAC - Programmation n 3

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

ACTIVITÉ DE PROGRAMMATION

Développement Logiciel

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

Interfaces graphiques avec l API Swing

Clé USB Wi-Fi TP-Link TL-WN721N (150 Mbps) Manuel d installation

Les arbres binaires de recherche

ET REGISTRE DE PRESENCE

Corrigé des exercices avancés sur les structures récursives

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

Tutorial et Guide TeamViewer

2. Comprendre les définitions de classes

Introduction au langage Java

Stockage de données sous Android

Soon_AdvancedCache. Module Magento SOON. Rédacteur. Relecture & validation technique. Historique des révisions

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Chapitre 10. Les interfaces Comparable et Comparator 1

Le hub d entreprise est une application de déploiement des applications mais aussi un outil de communication

Architecture Orientée Service, JSON et API REST

Master d Informatique Corrigé du partiel novembre 2010

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

TD/TP PAC - Programmation n 3

Transcription:

Un nouveau jeu Trouver, à partir d une couleur de départ, une couleur en modifiant les composantes rouge, vert et bleu de la couleur de départ. On peut choisir la couleur de départ. MainActivity GameActivity

GameModel Modèle crée à la création de l application. public class GameModel { int getcolor(); int getstartcolor(); int getendcolor(); void setstartcolor(int c); void setendcolor(int c); void resetcolor(); void changecolor(int c, boolean sign); boolean endofgame(); Constructeur : GameModel()

Classes utilitaires Une couleur public class ColorData { ColorData(String name, int color) String getname() int getcolor() boolean getdone() void setdone(boolean b) Un jeu : plusieurs couleurs de départ, une couleur à atteindre public class ColorPuzzle { ArrayList<ColorData> getstartcolors() ColorData getstartcolor(int i) int getendcolor() public void addstartcolor(colordata coloritem) public void setendcolor(int endcolor)

L application public class TheApplication extends Application { @Override public void oncreate() GameModel getgame() void setgame(colorpuzzle puzzle, int i) int getcurrentpuzzleindex() ColorPuzzle getcurrentpuzzle() void setcurrentpuzzle(int i) void nextpuzzle()

L application (suite) void inputsomecolorpuzzles() { colorpuzzles = new ArrayList<ColorPuzzle>(); Random ran = new Random(); ColorPuzzle colorpuzzle = new ColorPuzzle(); colorpuzzle.setendcolor(color.rgb(ran.nextint(255), ran.nextint(255), ran.nextint(255))); colorpuzzle.addstartcolor(new ColorData("RED", Color.RED)); colorpuzzle.addstartcolor(new ColorData("GREEN", Color.GREEN)); colorpuzzle.addstartcolor(new ColorData("BLUE", Color.BLUE)); colorpuzzles.add(colorpuzzle); colorpuzzle = new ColorPuzzle(); colorpuzzle.setendcolor(color.rgb(ran.nextint(255), ran.nextint(255), ran.nextint(255))); colorpuzzle.addstartcolor(new ColorData("CYAN", Color.CYAN)); colorpuzzle.addstartcolor(new ColorData("MAGENTA", Color.MAGENTA)); colorpuzzle.addstartcolor(new ColorData("YELLOW", Color.YELLOW)); colorpuzzles.add(colorpuzzle);

MainActiviy Composants de l interface (la vue) une liste pour choisir la couleur de départ (composant ListView) ; un bouton pour terminer (EXIT) ; un bouton pour accéder à une autre liste de couleurs de départ (NEXT) MainActivity GameActivity

activity_main.xml <RelativeLayout [..] > <TextView [..] android:text="color Droid" /> <ListView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/colorlist" /> <LinearLayout [..] > <Button [..] android:id="@+id/buttonexit" /> <Button [..] android:text="next" android:onclick="onclicknext" android:id="@+id/buttonnext" /> </LinearLayout> </RelativeLayout>

GameActivity Composants de l interface et comportement la surface de jeu : SurfaceView réactive ; la couleur à atteindre : TextView trois boutons : CHECK si la couleur de la surface est suffisament proche de celle à atteindre, retour à MainActivity avec message de succès ; REDO réinitialisation de la couleur de la surface ; CANCEL retour à MainActivity avec message d abandon. Retour à MainActivity avec succés affichage COLOR:DONE

activity_game.xml <LinearLayout [..] > <android.appdroid.gameview [..] /> <TextView android:id="@+id/colortofind" [..] /> <LinearLayout [..] > <Button [..] android:onclick="onclickcheck" /> <Button [..] android:onclick="onclickredo" /> <Button [..] android:onclick="onclickcancel" /> </LinearLayout> </LinearLayout>

MainActivity : la liste des couleurs de départ Gestion des ListView : 1. définir le contenu de la liste (déroulante) et sa visibilité 2. définir la réaction à la sélection d un item Le contenu : Une liste de TextView avec un texte et une couleur de fond donnés dans une List<ColorData> ; Une méthode pour actualiser les items visibles : ColorListAdapter ; La réaction Une méthode pour lancer l activité du jeu sélectionné : ColorListListener

Une ressource XML La vue d un item de la liste <TextView xmlns:android="http://schemas.android.com/apk/res/androi android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="25dp" android:background="#fff" android:gravity="center" android:text="empty" android:textsize="25dp" android:id="@+id/color_item" />

ColorListAdapter public class ColorListAdapter extends ArrayAdapter<ColorData> { ColorListAdapter(Context context, List<ColorData> itemdatas) { super(context, 0, itemdatas); // 0? @Override public View getview(int position, View convertview, ViewGroup parent) { if (convertview == null) { convertview = LayoutInflater.from(getContext()).inflate(R.layout.color_item,parent, false); setdata((textview)convertview, getitem(position)); return convertview; [...] Expansion d une description XML : LayoutInflater

ColorListAdapter (suite) [...] void setdata(textview itemview, ColorData itemdata) { if (itemdata.getdone()) itemview.settext(itemdata.getname()+" : DONE"); else itemview.settext(itemdata.getname()); itemview.setbackgroundcolor(itemdata.getcolor()); Modification dynamique du contenu d une vue : settext, setbackgroundcolor

ColorListListener public class ColorListListener implements AdapterView.OnItemClickListener { TheApplication app; MainActivity act; ColorListListener(TheApplication app, MainActivity act) { super(); this.app = app; this.act = act; @Override public void onitemclick(adapterview<?> parent, View v, int position, long id) { app.setgame(app.getcurrentpuzzle(), position); Intent gameintent = new Intent(app.getApplicationContext(), GameActivity.class); act.startactivityforresult(gameintent, MainActivity. GAME_ACTIVITY); On attend un résultat : startactivityforresult

MainActivity (1/3) @Override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); app = (TheApplication)this.getApplication(); app.inputsomecolorpuzzles(); app.setcurrentpuzzle(0); List<ColorData> itemdatas = app.getcurrentpuzzle().getstartcolors(); colorlistview = (ListView)findViewById(R.id.colorList); colorlistview.setadapter(new ColorListAdapter(this, itemdatas) ColorListListener listener = new ColorListListener(app,this); colorlistview.setonitemclicklistener(listener);

MainActivity (2/3) public void onclicknext(view view) { app.nextpuzzle(); colorlistview = (ListView) findviewbyid(r.id.colorlist); List<ColorData> itemdatas = app.getcurrentpuzzle().getstartcolors(); colorlistview.setadapter(new ColorListAdapter(this, itemdatas)

MainActivity (3/3) @Override protected void onactivityresult(int requestcode, int resultcode, Intent data) { if (resultcode == RESULT_OK) { ArrayList<ColorData> startcolors = app.getcurrentpuzzle().getstartcolors(); int rescolor = data.getintextra("color", 0); boolean found = false; for (int i=0;!found && (i < startcolors.size()); i++) if (startcolors.get(i).getcolor() == rescolor) { startcolors.get(i).setdone(true); found = true; colorlistview.setadapter(new ColorListAdapter(this, startcolors));

GameActivity (1/3) @Override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_game); app = (TheApplication)this.getApplicationContext(); TextView endcolorview = (TextView)findViewById(R.id.colorToFind); int endcolor = app.getgame().getendcolor(); endcolorview.setbackgroundcolor(endcolor); endcolorview.settext(app.stringrgb(endcolor));

GameActivity (2/3) public void onclickcheck(view view) { if (app.getgame().endofgame()) { Intent res = new Intent(); res.putextra("color", app.getgame().getstartcolor()); setresult(result_ok, res); finish();

GameActivity (3/3) public void onclickredo(view view) { app = (TheApplication)this.getApplication(); app.getgame().resetcolor(); public void onclickcancel(view view) { setresult(result_canceled); finish();