Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CASSE BRIQUE EN J2ME


Information sur la source

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

  • /**
  • * 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 ());
  • }
  • }
  • }
  • }
  • }
/**
 * 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/... :)
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de kingcobra le 06/07/2008 12:34:31

Salut,

Pourrais tu expliquer brievement les outils utilisés pour la création du jeu.
Quel commande génére le jar ?
Et pourrai tu si possible mettre le jar aussi que l'on puisse rapidement tester sur WM6.

Merci.

signaler à un administrateur
Commentaire de pol2008 le 25/11/2008 22:37:39

il marche pas

signaler à un administrateur
Commentaire de codefalse le 25/11/2008 22:49:40 administrateur CS

Ca c'est du commentaire !
Un peu plus de détails ?

signaler à un administrateur
Commentaire de pol2008 le 25/11/2008 23:22:45

j'ai essayer de le compiler sur eclipse j2me et ca marche pas.

signaler à un administrateur
Commentaire de codefalse le 26/11/2008 00:10:37 administrateur CS

Mais il te retourne une erreur ?, un message ?, il plante ?

signaler à un administrateur
Commentaire de pol2008 le 26/11/2008 00:50:58

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)

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Detection colision jeu casse brique [ par meudeuk ] Lu',je suis en train de faire un casse brique en java, mais je galere un peut sur la detection des colisions entre la balle et les briques.Je me demen j2me MIDlet .jar [ par 1985_bisengar ] Bonjour tout le monde, j'ai deux .jar un pour le jeu(MIDlet) et l'autre pour un message(MIDlet) comment je vais lier les 2 . jar pour que le message J2ME [ par patlebigboss ] Bonjour.S'ilvous plaît es-ce que quelqu'un aurait-il déjà codé le jeu appelé mancala en j2me?C'est exactement comme le bantoumi dans les téléphones no Un jeu en java pour telephone mobile [ par Format C ] J'ai une idee de creer un jeu en java pour telephone mobile en utilisant j2me.Pour le debut, je je vais d'utiliser une emulator.&nbsp;Y at-il quelqu'u midlet j2me ou est passé java.lang.Math.log [ par misterzinzin ] bonjour, je vien de commencer la programmation de midlet (java pour mobile) et je ne trouva pas la fonction permettant de calculer des logarithme dans [J2ME] Graphisme [ par fullblood ] Bonjour &#224; tous! J'aimerai changer la couleur de fond de mon application! Et pour &#231;a on m'a conseiller de faire un paint(Graphics g)... pour Urgent:j2me/Midlet [ par infkb ] Salut, j'ai une application en j2me ou je fais appel a 2 midlets avec chacune son cycle de vie, mon problème c'est que je ne sais pas comment faire J2ME [ par Canard73 ] Bonjour a tous,Je oudrai savoir comment optimiser en terme de place une aplication J2ME.J'ai developper avec des amis un jeu en java dans le cadre d'u casse brique en java [ par boblinux ] Bonjour,Pour commencer, je tiend a dire que je suis debuter en java. J'en fait pour mon plaisir chez moi. Donc voilà, j'essaye de faire un casse briqu classe Random et j2me [ par tlehoucq ] Bonjour,&nbsp;&nbsp; Je suis en train de d&#233;velopper un jeu en j2me et je n'arriv pas &#224; g&#233;n&#233;rer un nombre al&#233;atoire. Je ne peu


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version


LG KP501

Entre 9€ et 159€


Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 5,912 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.