Partage
  • Partager sur Facebook
  • Partager sur Twitter

controle pour eviter de sortir d'un tableau

    22 juillet 2016 à 7:06:33

    bonjour a tous
    nouveau venue dans cette section java suite a une formation que je viens de débuter

    comme notre prof n'est pas trop pédagogue, je viens pose ma question ici.

    il nous a donner comme exo un semblant de jeu de dame a réalisé
    donc un tableau rempli de zero de 10 par 10 et un pion 1 que l'on peu bouger comme bon nous semble.

    mais il m'est impossible de garder le pion a l’intérieur du tableau j'ai bien un message (pas dans cette version mais c pas le probleme majeur) qui préviens l'utilisateur qu'au prochain mouvement il risque de sortir du tableau mais si il fait le mouvement qui le fait sortir il m’éjecte du jeu tous simplement avec un erreur

    package jeux;
    
    import java.util.Random;
    import java.util.Scanner;
    
    public class ChasseV2 {
    
    	public static boolean Alert; // message d'alert
    	public static boolean validMouvement;
    	public static int mouvement; // choix mouvement utilisateur
    	public static int ligneTemp = -1;
    	public static int colonneTemp = -1;
    	public static int indiceLigne; // valeur de l'indice ligne
    	public static int indiceColonne; // valeur indice colonne
    	public static int ligne = 10; // ligne tableaux
    	public static int colonne = 10; // colonne tableaux
    	public static int tab[][] = new int[ligne][colonne]; // tableau du damier
    	public static int ligneOrig = 0; // position du pion a la ligne 
    	public static int colonneOrig = 0; // position du pion a la colonne 	
    	public static int NbCoup = 0; // incremente nombre de coup
    
    	public static void main(String[] args) {
    
    		Scanner saisie = new Scanner(System.in);
    
    		// int choix;
    		// int mouvement = 0; // choix utilisateur
    
    		// int L ; // indice ligne
    		// int C ; // indice colonne
    
    		// boolean mouvementOK;
    		// boolean interdit;
    		// int ligneTemp = -1;
    		// int colonneTemp = -1;
    
    		System.out.println("\nJeu Chasse le l'intru\n\nVous etes le 1 et vous devez chasser le 2 en moins de coups possible");
    
    		System.out.println("\nentrer la position de la ligne au choix de 0 a 9 \n");
    		ligneOrig = saisie.nextInt();
    		System.out.println("\nentrer la position de la colone au choix de 0 a 9\n");
    		colonneOrig = saisie.nextInt();
    
    		// indiceLigne = ligneOrig;
    		// indiceColonne = colonneOrig;
    
    		while (mouvement != 5) {
    			Random Rand1 = new Random();//mouvement aleatoire du pion a chasser
    			int coordX = Rand1.nextInt(9);//
    			int coordY = Rand1.nextInt(9);// fin mouvement aleatoire
    			
    			// debut boucle creation damier
    			for (int i = 0; i <= tab.length - 1; i++) {
    				for (int j = 0; j <= tab.length - 1; j++) {
    					tab[i][j] = 0; // damier
    					tab[indiceLigne][indiceColonne] = 1; // pion
    					tab[coordX][coordY] = 2; // X pion a chasser
    					System.out.print(" " + tab[i][j] + " ");
    
    				} // fin de boucle de creation du damier
    				System.out.println();
    
    			}
    			System.out.println("\nligne : " + indiceLigne + " colonne : " + indiceColonne + " \n");
    			NbCoup++;
    
    			afficheMenu();
    			mouvement = saisie.nextInt();
    			
    
    			// debut switch mouvement
    			switch (mouvement) {
    			case 1: {
    				indiceLigne = indiceLigne + 1;
    				indiceColonne = indiceColonne - 1;
    
    			}
    				break;
    			case 2: {
    				indiceLigne = indiceLigne + 1;
    				indiceColonne = indiceColonne + 0;
    			}
    				break;
    			case 3: {
    				indiceLigne = indiceLigne + 1;
    				indiceColonne = indiceColonne + 1;
    			}
    				break;
    			case 4: {
    				indiceLigne = indiceLigne + 0;
    				indiceColonne = indiceColonne - 1;
    			}
    				break;
    			case 6: {
    				indiceLigne = indiceLigne + 0;
    				indiceColonne = indiceColonne + 1;
    			}
    				break;
    			case 7: {
    				indiceLigne = indiceLigne - 1;
    				indiceColonne = indiceColonne - 1;
    			}
    				break;
    			case 8: {
    				indiceLigne = indiceLigne - 1;
    				indiceColonne = indiceColonne + 0;
    			}
    				break;
    			case 9: {
    				indiceLigne = indiceLigne - 1;
    				indiceColonne = indiceColonne + 1;
    			}
    				break;
    			case 5: {
    				System.out.println("\nDommage,\naurevoir dans ce cas.");
    			}
    				break;
    			default: {
    				System.out.println("\nLe deplacement est interdit !! veuillez taper un autre mouvement :\n");
    			}
    				break;
    			}
    			// fin de switch
    
    			// debut de test
    			if (validMouvement == true) {
    				if ((indiceLigne > 0) && (indiceLigne <= tab.length)) {
    					if ((indiceColonne > 0) && (indiceColonne <= tab.length)) {
    						System.out.println("TEST");
    					}
    				} else {
    					afficheMessage(Alert);
    				}
    			}
    			// fin de test
    				
    				// controle si pion a chasser est attraper
    				if ((tab[indiceLigne][indiceColonne] == tab[coordX][coordY]) && (mouvement != 5)) {
    				System.out.println("\n\nBRAVO ! Vous avez gagner en : " + NbCoup + " coup(s)\n\n");
    				mouvement = 5;
    				System.out.println("Souhaitez vous faire une autre parti ??\n");
    				mouvement = saisie.nextInt();
    				if (mouvement == 5) {
    					System.out.println("\nDommage,\naurevoir dans ce cas.");
    				}
    
    			}
    		} // fin de while
    
    	} // fin de main
    
    	// debut function selection mouvement
    	private static void afficheMenu() {
    		System.out.println("Choisir le mouvement du pion sur le damier : ");
    		System.out.println("1 => " + '\u21D9');
    		System.out.println("2 => " + '\u21D3');
    		System.out.println("3 => " + '\u21D8');
    		System.out.println("4 => " + '\u21D0');
    		System.out.println("6 => " + '\u21D2');
    		System.out.println("7 => " + '\u21D6');
    		System.out.println("8 => " + '\u21D1');
    		System.out.println("9 => " + '\u21D7' + "\n");
    		System.out.println("5 => Arrêt du jeu");
    		System.out.println("0 => Demarrer une partie");
    	}
    	// fin selection mouvement
    
    	// debut function message alert
    	private static void afficheMessage(boolean Alert)
    	{
    		if (Alert = true)
    		{
    			System.out.println("\nATTENTION le Prochain mouvement risque de vous faire sortir du jeu\n");
    		}
    	}
    	// fin message alert
    
    }
    

    si une personne pouvez m'expliquer comment résoudre ce problème afin de le bloquer dans mon tableau pour eviter de sortir du jeu cela serai sympa
    merci d'avance de votre aide et vos réponse.

    • Partager sur Facebook
    • Partager sur Twitter
    Je suis ici pour apprendre ! je cherche juste à être orienté pas que l'on me mâche le travail, mais je n'ai pas 10 ans expérience en dev, donc essayer d'être un minimum pédagogue merci
      22 juillet 2016 à 9:59:43

      En gros, la logique voudrait : avant qu'il bouge, il faut vérifier si le pion va sortir.

      Si il va sortir alors ne pas bouger.

      Dans l'exemple le joueur a saisi '1' au clavier, avant de bouger, je vérifie si je vais pas sortir.

      Exemple :

      case 1: {
        //si je ne suis pas à la limite en ligne, je peux avancer
        if(indiceLigne != ligne - 1){
          indiceLigne = indiceLigne + 1;
        }
        //si je ne suis pas à la colonne 0, je peux reculer
        if(indiceColonne == 0) {
          indiceColonne = indiceColonne - 1;
        }
      }



      • Partager sur Facebook
      • Partager sur Twitter
        26 juillet 2016 à 6:58:33

        salut,
        dsl pour la reponse tardive et merci pour la tienne
        le switch ne sert qu'a la prise en compte des mouvement, sachant que j'utilise le paver numerique avec de l'unicode je vais faire une condition avant mon switch afin de les tester
        • Partager sur Facebook
        • Partager sur Twitter
        Je suis ici pour apprendre ! je cherche juste à être orienté pas que l'on me mâche le travail, mais je n'ai pas 10 ans expérience en dev, donc essayer d'être un minimum pédagogue merci
          26 juillet 2016 à 9:35:21

          Hello,

          if (indiceLigne >= 0 && indiceLigne < tab.length && indiceColonne >= 0 && indiceColonne < tab[0].length)
          {
              System.out.println("TEST");
          }else {
              afficheMessage(Alert);
          }


          • Partager sur Facebook
          • Partager sur Twitter

          controle pour eviter de sortir d'un tableau

          × 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