Casse brique en j2me

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

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.