Casse brique en j2me

Soyez le premier à donner votre avis sur cette source.

Vue 18 183 fois - Téléchargée 1 352 fois

Description

Bonjour à tous :)
Bon voila, pour des besoins scolaires, j'ai du faire un petit jeu en J2ME.
Je me suis amusé comme un fou sur la Poo (je ne dit pas que c'est parfait, j'ai juste fait de mon mieux) et j'ai pensé présenter cette source car quand je l'ai commencé, je n'ai pas trouvé beaucoup de sources en J2ME ici, donc voila :)

Pour information c'est un simple casse brique avec 5 niveaux de difficulté. Vous avez plusieurs couleurs possibles pour des briques et chaque couleur est représentée par une classe.
Vous avez ensuite une classe Brique qui genere une brique en fonction de sa couleur (instance d'une classe couleur de brique) de sa position, de sa résistance et du gain qu'elle apportera au jour qui brise la brique.

J'ai implémenté quelques designs patterns, SingleTon, Factory et Observer (le dernier à ma facon :p)

Je vous laisse découvrir le code, dites moi ce que vous en pensez

Source / Exemple :


/**

  • Voici le code source de la classe Main, la classe de base à l'application
  • /
package myCasseBrique.Main; import javax.microedition.lcdui.Command; import javax.microedition.lcdui.CommandListener; import javax.microedition.lcdui.Display; import javax.microedition.lcdui.Displayable; import javax.microedition.lcdui.Form; import javax.microedition.lcdui.StringItem; import javax.microedition.midlet.MIDlet; import javax.microedition.midlet.MIDletStateChangeException; /**
  • @package myCasseBrique.Main
  • @name MainCasseBrique extends MIDlet implements CommandListener
  • @filesource MainCasseBrique.java
  • @author Cyril Nicodème
  • @license Gnu/Gpl
  • /
public class MainCasseBrique extends MIDlet implements CommandListener { /**
  • @var Display _display
  • Instance of Display
  • /
private Display _display; /**
  • @var Form _form
  • Instance of Form
  • /
private Form _form; /**
  • @var StringItem _welcomeStr
  • Instance of StringItem
  • /
private StringItem _welcomeStr; /**
  • @var Command _exitC
  • Instance of Command
  • /
private Command _exitC; /**
  • @var Command _startC
  • Instance of Command
  • /
private Command _startC; /**
  • @var BaseCasseBrique _baseCasseBrique
  • Instance of BaseCasseBrique
  • /
private BaseCasseBrique _baseCasseBrique; /**
  • @name public MainCasseBrique
  • Constructor
  • Set the base game
  • /
public MainCasseBrique () { this._display = Display.getDisplay(this); this._form = new Form("Casse Brique"); this._welcomeStr = new StringItem ("","Bienvenue dans le jeu du Casse Brique.\nVous pouvez déplacer la barre en cliquant sur les touche 4 et 6.\nBon courage ! :)"); this._exitC = new Command("Exit",Command.EXIT,1); this._startC = new Command("Start",Command.OK,2); this._form.append(this._welcomeStr); this._form.addCommand(this._exitC); this._form.addCommand(this._startC); this._form.setCommandListener(this); } /**
  • @name protected void destroyApp
  • Destroy (end) the application
  • @param boolean arg0
  • @return void
  • /
protected void destroyApp (boolean arg0) throws MIDletStateChangeException { notifyDestroyed(); } /**
  • protected void pauseApp
  • Set the game into pause mod
  • @return void
  • /
protected void pauseApp () { // Nothing to do } /**
  • protected void startApp
  • Start the application (set the current Form)
  • @return void
  • /
protected void startApp () throws MIDletStateChangeException { this._display.setCurrent(this._form); } /**
  • @name public void commandAction
  • Set the view (Form or Canvas)
  • And Manage the Commands pressed (Start, Exit)
  • @param Command cmd
  • @param Displayable curDisplay
  • /
public void commandAction (Command cmd, Displayable curDisplay) { if (curDisplay == this._baseCasseBrique) { if (cmd == this._exitC) { this._baseCasseBrique = null; this._display.setCurrent (this._form); } } else { if (cmd == this._startC) { this._baseCasseBrique = new BaseCasseBrique (); this._baseCasseBrique.addCommand(this._exitC); this._baseCasseBrique.setCommandListener(this); this._display.setCurrent(this._baseCasseBrique); this._baseCasseBrique.repaint (); } else if (cmd == this._exitC) { try { this.destroyApp(true); } catch (MIDletStateChangeException mSCE) { System.out.println("Une erreur s'est produite : "+mSCE.getMessage ()); } } } } }

Conclusion :


A ce jour j'ai trouvé un bug, mais je n'arrive pas à le corriger :
Quand vous touchez un angle avec la boulle, elle réagit bizzarement, en dehors de toute normalité.
Je vous laisse tester, vous lancez le jeu, et vous appuyez sur 5 ou sur le bouton ok, vous verrez bien :)

Voici les touches utilisables :
4 ou Gauche : Déplacer la raquette à gauche
6 ou Droite : Déplacer la raquette à droite
5 ou Ok : Lancer la balle.

J'attends vos remarques/avis/conseils/... :)

Codes Sources

A voir également

Ajouter un commentaire Commentaires
lolita24 Messages postés 8 Date d'inscription dimanche 18 novembre 2007 Statut Membre Dernière intervention 31 mai 2011
31 mai 2011 à 23:54
bon travail ça marche normal ché moi sur la plate forme JavaME SDK et je peux jouer aussi merci bien pour ce magnifique travail je vous encourage bien à continuer dans ce domaine
bouaoudaana Messages postés 1 Date d'inscription vendredi 9 janvier 2009 Statut Membre Dernière intervention 21 mai 2011
21 mai 2011 à 14:10
ça marche pa il me retourne ce messege quand je lance Toolkit:
com.sun.kvem.midletsuite.InvalidJadException: Reason = 22
The manifest or the application descriptor MUST contain the attribute: MIDlet-1

Merci de me repondre
kolch Messages postés 2 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 5 janvier 2010
5 janv. 2010 à 18:03
Good job ....jolie application
pol2008 Messages postés 3 Date d'inscription lundi 28 juillet 2008 Statut Membre Dernière intervention 26 novembre 2008
26 nov. 2008 à 00:50
voici ce qu'il retourne à la compilation:
Exception in thread "main" java.lang.UnsatisfiedLinkError: com.sun.midp.main.Configuration.getProperty0(Ljava/lang/String;)Ljava/lang/String;
at com.sun.midp.main.Configuration.getProperty0(Native Method)
at com.sun.midp.main.Configuration.getProperty(Configuration.java:32)
at com.sun.midp.lcdui.Resource.<clinit>(Resource.java:30)
at com.sun.midp.main.Main.initSystemLabels(Main.java:694)
at com.sun.midp.main.Main.main(Main.java:104)
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
26 nov. 2008 à 00:10
Mais il te retourne une erreur ?, un message ?, il plante ?

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.