TP2 J2ME MIDP IHM bas niveau



Documents pareils
Java ME : une présentation. Jean-Marc Farinone

Corrigé des exercices sur les références

Projet de programmation (IK3) : TP n 1 Correction

SugarCubes. Jean-Ferdinand Susini Maître de Conférences, CNAM Chaire systèmes enfouis et embarqués. Paris, le 9 janvier, 2009

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

Programmation par les Objets en Java

APPLICATIONS JAVA. 1. JDBC Java Database Connectivity. Applications Web

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

Programmer en JAVA. par Tama

Développement Logiciel

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

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

Premiers Pas en Programmation Objet : les Classes et les Objets

Package Java.util Classe générique

Cours 1: Java et les objets

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

Programmation Par Objets

Programmation avec des objets : Cours 7. Menu du jour

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

Programmation en Java IUT GEII (MC-II1) 1

Programme Compte bancaire (code)

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

TP1 : Initiation à Java et Eclipse

Threads. Threads. USTL routier 1

Desktop Intégration. Rémi Forax

Chapitre 10. Les interfaces Comparable et Comparator 1

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

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

Applet pour visualiser les variables «automate» notifiées

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

Langage Java. Classe de première SI

Introduction au langage Java

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

Tp 1 correction. Structures de données (IF2)

Encadré par : Michel SIMATIC

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

Auto-évaluation Programmation en Java

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

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

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

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Arbres binaires de recherche

LOG4430 : Architecture logicielle et conception avancée

Un ordonnanceur stupide

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

2. Comprendre les définitions de classes

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

as Architecture des Systèmes d Information

Prendre le marteau, le tableau, le mètre, le crayon, la ficelle, le clou, la pointe ;

Utilisation d objets : String et ArrayList

Java Licence Professionnelle CISII,

Machines virtuelles fonctionnelles (suite) Compilation ML Java

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

TD/TP PAC - Programmation n 3

INF 321 : mémento de la syntaxe de Java

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

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

Synchro et Threads Java TM

Introduction : les processus. Introduction : les threads. Plan

Master d Informatique Corrigé du partiel novembre 2010

Design patterns. Design patterns - définition. Design patterns - avantages

Programmation Objet I

API04 Contribution. Apache Hadoop: Présentation et application dans le domaine des Data Warehouses. Introduction. Architecture

Java Licence Professionnelle CISII,

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

Dis papa, c est quoi un bus logiciel réparti?

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Modèle à composants. Daniel Hagimont. IRIT/ENSEEIHT 2 rue Charles Camichel - BP TOULOUSE CEDEX 7. Remerciements

Java 1.5 : principales nouveautés

JAVA TD0. Prise en main du langage Environnement de base JAVA 1

TP3. Mail. Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose.

Solutions du chapitre 4

TD/TP PAC - Programmation n 3

Bases Java - Eclipse / Netbeans

PROGRAMMATION PAR OBJETS

7 Développement d une application de MapReduce

Corrigés des premiers exercices sur les classes

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

Programmation Orientée Objet

Prendre le marteau, le tableau, le mètre, le crayon, la ficelle, le clou, la pointe ;

Composants Logiciels. Le modèle de composant de CORBA. Plan

Notes de cours Practical BigData

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

ACTIVITÉ DE PROGRAMMATION

TP JAVASCRIPT OMI4 TP5 SRC

Une introduction à Java

Pour plus de détails concernant le protocole TCP conférez vous à la présentation des protocoles Internet enseignée pendant.

Conventions d écriture et outils de mise au point

Android UIThread, Thread, Handler et AsyncTask

STAGE IREM 0- Premiers pas en Python

Communication inter-processus (IPC) : tubes & sockets. exemples en C et en Java. F. Butelle

Les arbres binaires de recherche

Derrière toi Une machine virtuelle!

RMI le langage Java XII-1 JMF

4. Outils pour la synchronisation F. Boyer, Laboratoire Lig

Introduction à la programmation concurrente

Polycopié Cours Programmation Orientée Objet sous Java Programme : Filière SMI S5

Transcription:

TP2 J2ME MIDP IHM bas niveau 1 ) Ecrire une MIDlet qui présente un GoBan c'est à dire un plateau de jeu pour jouer au Go. La couleur de fond du GoBan sera 0xDCB35C. On doit obtenir : Solution : Le code de cette MIDlet est habituel : import javax.microedition.lcdui.display; import javax.microedition.midlet.midlet; import javax.microedition.midlet.midletstatechangeexception; public class GoBanMIDlet extends MIDlet { private boolean started; protected Display display;; protected void destroyapp(boolean arg0) throws MIDletStateChangeException { protected void pauseapp() { { protected void startapp() throws MIDletStateChangeException if (!started) { GoBan gb = new GoBan(); display = Display.getDisplay(this); display.setcurrent(gb); started = true; 1/5

Elle crée un GoBan et l'affiche. La classe GoBan dessine un plateau colloré et des traits verticaux et horizontaux : public class GoBan extends Canvas { private int foreground = 0xDCB35C; private int black = 0x000000; private int white = 0xFFFFFF; private int widthgoban; private int heigthgoban; private int largeurcarre; public GoBan() { widthgoban = getwidth(); heigthgoban = getheight(); protected void paint (Graphics g) { g.setcolor(foreground); g.fillrect(0, 0, widthgoban, heigthgoban); dessinetraits(g); void dessinetraits(graphics g){ int minhauteurlargeur = widthgoban > heigthgoban? heigthgoban : widthgoban; largeurcarre = minhauteurlargeur / Constantes.NOMBRE_MIN_CARRE; g.setcolor(black); // dessin des lignes horizontales for (int i = largeurcarre ; i < heigthgoban; i += largeurcarre){ g.drawline(0, i, widthgoban, i); // dessin des lignes verticales for (int j = largeurcarre ; j < widthgoban; j += largeurcarre){ g.drawline(j, 0, j, heigthgoban); Cette classe utilise uniquement une interface de Constantes : public interface Constantes { public int NOMBRE_MIN_CARRE = 8; 2/5

2 ) Faire apparaître un pierre et faites la déplacer avec les touches UP, DOWN, LEFT, RIGHT. On doit obtenir : Solution Il faut ajouter quelques lignes à la classe GoBan qui permet de créer et d'afficher une nouvelle pierre ainsi que la gestion des touches clavier (ci dessous en gras) : public class GoBan extends Canvas { private int foreground = 0xDCB35C; private int black = 0x000000; private int white = 0xFFFFFF; private int widthgoban; private int heigthgoban; private int numerocoup = 0; private int largeurcarre; private Pierre nouvellepierre; private boolean nouvellepierreaposer = true; public GoBan() { widthgoban = getwidth(); heigthgoban = getheight(); protected void paint (Graphics g) { g.setcolor(foreground); g.fillrect(0, 0, widthgoban, heigthgoban); dessinetraits(g); 3/5

if (nouvellepierreaposer){ nouvellepierre = creeetplacenouvellepierre(); nouvellepierre.dessine(g); void dessinetraits(graphics g){ int minhauteurlargeur = widthgoban > heigthgoban? heigthgoban : widthgoban; largeurcarre = minhauteurlargeur / Constantes.NOMBRE_MIN_CARRE; g.setcolor(black); // dessin des lignes horizontales for (int i = largeurcarre ; i < heigthgoban; i += largeurcarre){ g.drawline(0, i, widthgoban, i); // dessin des lignes verticales for (int j = largeurcarre ; j < widthgoban; j += largeurcarre){ g.drawline(j, 0, j, heigthgoban); private Pierre creeetplacenouvellepierre(){ nouvellepierreaposer = false; int couleurpierre; if (numerocoup % 2 == 0){ couleurpierre = white; else { couleurpierre = black; numerocoup++; int placement = Constantes.NOMBRE_MIN_CARRE - 1; placement *= largeurcarre; Pierre lanouvellepierre = new Pierre(couleurPierre, placement, placement, largeurcarre); return lanouvellepierre; protected void keypressed(int keycode) { if (getgameaction(keycode) == Canvas.DOWN) { nouvellepierre.downmove(); else if (getgameaction(keycode) == Canvas.UP) { nouvellepierre.upmove(); else if (getgameaction(keycode) == Canvas.LEFT) { nouvellepierre.leftmove(); else if (getgameaction(keycode) == Canvas.RIGHT) { nouvellepierre.rightmove(); else if (getgameaction(keycode) == Canvas.FIRE) { // on pourrait ici positionner la pierre et en créer une nouvelle qui sera déplacée // il faudra penser à stocker les pierres désormais fixes pour les redessiner // comme on dessine les traits. // bref c'est la suite de l'exercice!! repaint(); 4/5

On a donc défini une classe Pierre : public class Pierre { private int couleurpierre; private int x; private int y; private int diametre; private int largeurcarre; // nécessaire pour pouvoir déplacer la pierre Pierre(int couleurpierre, int x, int y, int largeurcarre){ this.couleurpierre = couleurpierre; this.x = x; this.y = y; this.largeurcarre = largeurcarre; this.diametre = (int)(largeurcarre / 1.2); public void dessine(graphics g){ g.fillarc((int)(x - diametre / 2.0), (int)(y - diametre / 2.0), diametre, diametre, 0, 360); public void downmove(){ y += largeurcarre; public void upmove(){ y -= largeurcarre; public void leftmove(){ x -= largeurcarre; public void rightmove(){ x += largeurcarre; 5/5