Partage
  • Partager sur Facebook
  • Partager sur Twitter

Applet : correctif de ce damier

    16 décembre 2009 à 21:39:12

    Salut,

    j'ai crée un damier avec un pion qui se déplace sur tout ce damier, mais le problème est que ce damier se recrée à chaque itération, il ne serait pas possible qu'il se crée et s'affiche une seule fois seulement ?

    c'est un peu dur à expliquer, mais une fois que vous testiez cet applet ça sera plus clair :D

    import java.applet.Applet;
    import java.awt.*;
    
    public class damier extends Applet implements Runnable
    {
    	private static final long serialVersionUID = 1L;
    	Thread t=null;
    	int xx,yy, compteur;
    	String direction="droit";
    
    	boolean couleur=true;
    	public void couleur(Graphics g)
    	{
    		if(couleur)
    		{
    			g.setColor(Color.white);
    			couleur=!couleur;
    		}
    		else
    		{
    			g.setColor(Color.green);
    			couleur=!couleur;
    		}
    	}
    
    	// method depart
    	public void init()
    	{
    		this.setBackground(Color.lightGray);
    		this.setSize(370, 420);
    	}
    
    	public void paint(Graphics g)
    	{
    		// damier
    		for(int y=10; y<350; y+=50)
    		{
    			for(int x=10; x<350; x+=50)
    			{
    				couleur(g); // g couleur par ligne
    				g.fillRect(x,y, 50, 50);
    			}
    		}
    
    		g.setColor(Color.black);
    		g.fillOval(xx, yy, 23, 23);
    
    	}
    
    
    	public void run()
    	{
    		xx=yy=22;
    		compteur = 7;
    		for(int y=0; y<=12; y++)
    		{
    			for(int l=1; l<=compteur; l++)
    			{
    
    				try {
    					t.sleep(200);
    				} catch (InterruptedException e) {
    					e.printStackTrace();
    				}
    				repaint();
    				if(l!=compteur)
    				{
    					if(direction=="droit") {xx+=50;}
    					if(direction=="bas") {yy+=50;}
    					if(direction=="gauche") {xx-=50;}
    					if(direction=="haut") {yy-=50;}	
    				}
    			}
    			if(direction=="droit")
    			{
    				direction = "bas";
    				if(compteur<7)
    					compteur=compteur-1;
    			}
    
    			else if(direction=="bas") 
    			{ 
    				direction = "gauche";
    			}
    
    			else if(direction=="gauche")
    			{
    				direction = "haut";
    				compteur=compteur-1;
    			}
    
    			else if(direction=="haut")
    			{
    				direction = "droit";	
    			}
    
    		}
    	}
    
    	public void start()
    	{
    		t = new Thread(this);
    		t.start();
    	}
    
    	public void stop()
    	{
    		t.stop();
    	}
    }
    


    en testant cet applet vous saurez de quoi je parle :)

    merci d'avance
    • Partager sur Facebook
    • Partager sur Twitter
      17 décembre 2009 à 10:10:59

      A la place de :
      public void paint(Graphics g){
           //ton code
      }
      

      met :
      public void paintComponent(Graphics g){
            super.paintComponent(g);
            //ton code
      }
      

      • Partager sur Facebook
      • Partager sur Twitter
        17 décembre 2009 à 10:15:45

        Salut,

        ça ne marche pas snif snif ...
        • Partager sur Facebook
        • Partager sur Twitter
          17 décembre 2009 à 13:21:26

          C'est normal que la couleur des cases change à chaque tour de boucle ?
          • Partager sur Facebook
          • Partager sur Twitter
            17 décembre 2009 à 16:19:49

            beh c'est sa le problème ^^

            à chaque tour on dessine le tableau du damier, il n y'a pas moyen de le dessiner une seule fois seulement ?
            • Partager sur Facebook
            • Partager sur Twitter
              17 décembre 2009 à 20:44:25

              public void paint(Graphics g)
              	{
              		// damier
              		for(int y=0; y<8; y++)
              		{
              			for(int x=0; x<8; x++)
              			{
              				if((y+x)%2==0){
              					g.setColor(Color.white);
              				}
              				else{
              					g.setColor(Color.green);
              				}
              				//couleur(g); // g couleur par ligne
              				g.fillRect(x*50, y*50, 50, 50);
              			}
              		}
              		
              		g.setColor(Color.black);
              		g.fillOval(xx, yy, 23, 23);
              		
              	}
              

              Revoi ton code il est horrible ! :euh:
              Sépare bien ton modéle (avec les coordonnées en case) et ta vue (avec les coordonnée en pixel).
              Je te conseille de lire : tuto mvc du sdz
              • Partager sur Facebook
              • Partager sur Twitter
                17 décembre 2009 à 20:55:32

                pourquoi je dois le séparer ? les mvc sont fait que pour les grands scripts non ?

                merci
                • Partager sur Facebook
                • Partager sur Twitter
                  17 décembre 2009 à 23:08:55

                  Non MVC c'est un design pattern qui permet de séparer les différentes couches de ton application.
                  De plus je suppose que ce damier c'est pour faire un jeu? C'est mieux d'avoir un code structuré pour continuer à l'agrandir.
                  Sinon sans parler mvc il faudrait une logique dans ton code : Une approche un peu objet. Des classes Damier, Case, Pion, etc...
                  • Partager sur Facebook
                  • Partager sur Twitter
                    17 décembre 2009 à 23:12:08

                    Au passage, direction est un objet (String), et on ne compare pas les objets avec == mais avec la méthode equals.
                    Il faut généralement la redéfinir mais il se trouve que pour un type aussi utilisé que String, c'est déjà implémenté.
                    • Partager sur Facebook
                    • Partager sur Twitter

                    Applet : correctif de ce damier

                    × 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