Partage
  • Partager sur Facebook
  • Partager sur Twitter

Choix entre condition/for

    17 octobre 2016 à 19:06:10

    Bonsoir, je suis entrain de crée un jeu de société (jeu du moulin) pour l'école. 

    Je voudrais pouvoir a chaque capture afficher le pion capturé sur le côté, cependant je n'arrive pas avec des "if" car ils me "suppriment" les pions supprimé précédent alors que je veux les garder... 

    for(int nb_pions_noirs_restants=9;nb_pions_noirs_restants>2;nb_pions_noirs_restants--){
    			g.setColor(Color.BLACK);
    			g.fillOval(sit_x[nb_pions_noirs_restants],sit_y[nb_pions_noirs_restants],50,50);
    			g.setColor(Color.GRAY);
    			g.fillOval(sit_x[nb_pions_noirs_restants],sit_y[nb_pions_noirs_restants],42,42);
    		}

    Donc j aimerais ici que pour chaque fois qu'un pion est supprimé et donc que la fonction nb_pions_noirs restants diminue, un pion apparaisse et ainsi de suite, mais ici la boucle for me fait bugger mon jeu ... Le nb_pions_noirs restants est initialisé a 9 et a chaque fois qu'un pions est supprimé il est diminuer. les sit_x et sit_y sont des tableaux déjà crées 

    Voila mon public void graphique si l'erreur est au niveau du placement : 

    public void paintComponent(Graphics g){
    		g.setColor(Color.LIGHT_GRAY);
    		g.fillRect(0,0,1500,1032);
    		g.setColor( Color.BLACK); // couleur carrés 
    		g.drawRect(40,40,900,900);
    		g.drawRect(190,190,600,600);
    		g.drawRect(340, 340, 300, 300); // les trois carrés 
    
    		Font font = new Font("Courier", Font.BOLD,20); // PION NOIR CAPTURE 
    		g.setFont(font);
    		g.setColor(Color.BLACK);
    		g.drawString("Pion noirs capturés : ", 1100,100);
    		
    		for(moteur.nb_pions_noirs_restants=8;moteur.nb_pions_noirs_restants!=2;moteur.nb_pions_noirs_restants--){
    			g.setColor(Color.BLACK);
    			g.fillOval(sit_x[moteur.nb_pions_noirs_restants],sit_y[moteur.nb_pions_noirs_restants],50,50);
    			g.setColor(Color.GRAY);
    			g.fillOval(sit_x[moteur.nb_pions_noirs_restants],sit_y[moteur.nb_pions_noirs_restants],42,42);
    		}
    		
    		Font font1 = new Font("Courier", Font.BOLD,20); // PION BLANC CAPTURE
    		g.setFont(font1);
    		g.setColor(Color.WHITE);
    		g.drawString("Pion blanc capturés : ", 1100,500);
    		
    		
    		
    		g.setColor(Color.BLACK); // couleur traits
    		g.drawLine(490,40,490,340);
    		g.drawLine(490,640,490,940);
    		g.drawLine(340,490,40,490);
    		g.drawLine(640,490,940,490); // les 4 traits qui relient mes 3 carrés
    		for(int i=0;i<24;i++){
    			g.fillOval(pos_x[i]-10,pos_y[i]-10,20,20); // emplacements possible pour les pions
    		}
    		
    		for(int i=0;i<24;i++){
    			if(moteur.position[i]==Moteur.PION_BLANC){
    				if(pion_selectionne==i){
    					g.setColor(Color.LIGHT_GRAY);
    				}
    				g.setColor(Color.BLACK);
    				g.fillOval(pos_x[i]-25,pos_y[i]-25,50,50);
    				g.setColor(Color.WHITE);
    				g.fillOval(pos_x[i]-21,pos_y[i]-21,42,42);
    			}
    			else if(moteur.position[i]==Moteur.PION_NOIR){
    				if(pion_selectionne==i){
    					g.setColor(Color.DARK_GRAY);
    				}
    				g.setColor(Color.BLACK);
    				g.fillOval(pos_x[i]-25,pos_y[i]-25,50,50);
    				g.setColor(Color.GRAY);
    				g.fillOval(pos_x[i]-21,pos_y[i]-21,42,42);
    			}
    		}
    	}

    Bonne soirée et merci pour les réponses qui suivront. Je n'hésiterait pas à mieux m'exprimer si vous ne comprenez pas le problème.

    • Partager sur Facebook
    • Partager sur Twitter
      17 octobre 2016 à 21:49:01

      Bonjour,

      C'est toi qui réinitialise nb_pions_noirs_restants, ligne 14. Pour éviter ça, il faut utiliser une variable locale. (et respecter les conventions de nommage)

      for (int nbPions = moteur.nbPionsNoirsRestants; nbPions > 0; --nbPions) {
         // ...
      }



      • Partager sur Facebook
      • Partager sur Twitter
        18 octobre 2016 à 2:10:58

        Merci beaucoup !

        Cependant je ne sais pas où placer cette boucle dans mon paintComponent car il ne m'affiche plus le contenu du jeu selon 'endroit où je le place ...

        Cordialement et encore merci pour ton aide ;)

        • Partager sur Facebook
        • Partager sur Twitter
          19 octobre 2016 à 1:49:32

          Normalement, ça ne devrait pas dépendre de ce bout de code.
          • Partager sur Facebook
          • Partager sur Twitter

          Choix entre condition/for

          × 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