Partage
  • Partager sur Facebook
  • Partager sur Twitter

Hanoi J2ME

    8 avril 2011 à 8:55:54

    Bonjour, je dois faire une application pour portables en java donc a programmer avec J2ME.
    J'ai deja un peu commence mais là j'avoue que je bloque un peu quelqun pourrai t il m aider pour faire une tour de Hanoi simple en utilisant juste des fonctions telles que rectfill?

    Je vous montre deja mon code.

    import javax.microedition.midlet.*;
    import javax.microedition.lcdui.*;
    
    public class Hanoi extends MIDlet implements CommandListener{
      private Display display;
      private List list;
      private Command ok, exit;
      private CanvasDraw canvasDraw;
      int listItemIndex;
    
      public Hanoi(){
        canvasDraw = new CanvasDraw();
        display = Display.getDisplay(this);
        list = new List("ActionList", List.IMPLICIT);
        ok = new Command("Start", Command.OK, 2);
        
        exit = new Command("Exit", Command.EXIT, 2);
        list.append("Start Game", null);
        
        list.addCommand(ok);
        list.addCommand(exit);
        list.setCommandListener(this);
      }
      
      public void startApp(){
        display.setCurrent(list);
      }
    
      public void pauseApp(){}
      
      public void destroyApp(boolean unconditional){
        notifyDestroyed ();
      }
    
      public void commandAction(Command c, Displayable d){
        listItemIndex = list.getSelectedIndex();
        if(c == ok){
          display.setCurrent(canvasDraw);
        }else if(c == exit){
          destroyApp(true);
        }
      }
    
      class CanvasDraw extends Canvas implements CommandListener{
        Command back;
        int verticalAlignment = 100;
        int horizontalAlignment = 40;
    
        public CanvasDraw(){
          back = new Command("Back", Command.BACK, 1);
          addCommand(back);
          setCommandListener(this);
        }
    
        public void paint(Graphics g){
          g.setColor(0, 0, 255);
          g.fillRect(0,0, getWidth (), getHeight ());
          g.setColor(255, 0, 0);
    
          if(listItemIndex == 0){
        	  g.drawString("Hanoi", getWidth()/2, 5, Graphics.HCENTER | 
        		        Graphics.TOP);
    
        		        g.fillRect(getWidth () / 4, verticalAlignment, getWidth() / 2, horizontalAlignment);
          }
    
        
        }
    
        public void commandAction (Command c, Displayable d){
          if(c == back){
            display.setCurrent(list);
          }
        }
        protected void keyPressed(int keyCode){
        	if(keyCode ==-1){
        		verticalAlignment=verticalAlignment-10;
        	}
        	else if	(keyCode ==-2){
        		verticalAlignment=verticalAlignment+10;
        	}
        	
        	else if	(keyCode ==-3){
        		horizontalAlignment=horizontalAlignment-10;
        	}
        	
        	else if	(keyCode ==-4){
        		horizontalAlignment=horizontalAlignment+10;
        	}
            repaint();
          }
        
      }
    }
    

    bon la je voulais faire une fontion qui crée des rectangles et une autre ofnction imbriquee qui crée une deuxieme colonne de rectangles mais cela n'a pas l 'air de fonctionner :euh:
    si vous avez des idées elle seraientles bienvenues, je sais que Hanoi a deja été traite mais pas pour le J2ME et jai du mal a me reperer avec les classe de J2ME
    • Partager sur Facebook
    • Partager sur Twitter
      8 avril 2011 à 9:42:11

      Yop soulain :p ,


      Pour ceux qui ne savent pas ce que c'est que le jeux des tour de hanoi :

      Citation : Wikipédia


      Le problème des tours de Hanoï est un jeu de réflexion imaginé par le mathématicien français Édouard Lucas, et consistant à déplacer des disques de diamètres différents d'une tour de « départ » à une tour d'« arrivée » en passant par une tour « intermédiaire » et ceci en un minimum de coups, tout en respectant les règles suivantes :

      * on ne peut déplacer plus d'un disque à la fois,
      * on ne peut placer un disque que sur un autre disque plus grand que lui ou sur un emplacement vide.

      On suppose que cette dernière règle est également respectée dans la configuration de départ.



      Si je ne me trompe pas Hanoi la résolution du problème c'est :

      function Déplacer (nombre, de, à, par){
          if( nombre > 0){
                        Déplacer nombre - 1, de, par, à;
                        Bouger-un-disque de, à;
                        Déplacer nombre - 1, par, à, de;
          }
      }
      


      Littéralement bien sur ;)

      Pour un soulain c'est pas facile forcement :)


      Ensuite pour les fillrect, vu que je connais pas J2ME c'est pas facile Je laisse a d'autre le soin de te l'expliquer soulain :p

      EDIT : Je me penche dessus et je t'en dis plus ce week end ;)
      • Partager sur Facebook
      • Partager sur Twitter
        8 avril 2011 à 10:36:13

        Donc pour fillRect ( et non rectfill désolé) tu initialise d'abord la couleur de ton rectangle avec setColor(x,y,z)
        avex x= rouge y=vert z=bleu
        et z=0 etant 'pas du tout de bleu' z=255 etant 'maximum de bleu'
        et ensuite
        tu utilise fillRect(x,y,L,l) et x et y les coordonnées du rectangle
        et L et l la longuer et la largeur de ton rectangle.
        example:
        g.setColor(0, 0, 255);
        g.fillRect(0,0, getWidth (), getHeight ());
        au fait prends tes mielpops avec de la biere ca tue
        :lol:
        • Partager sur Facebook
        • Partager sur Twitter

        Hanoi J2ME

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown