begin process at 2008 07 24 19:13:20
1 215 858 membres
413 nouveaux aujourd'hui
14 179 membres club

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/... :)
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

  • 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.

Ajouter un commentaire

Discussions en rapport avec ce code source

Pub



Appels d'offres

Creation portail video
Budget : 3 000€
Site de e-commerce
Budget : 5 000€
Demande de devis pour ...
Budget : 7 000€

Snippets en rapport

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

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

Boutique

Boutique de goodies CodeS-SourceS