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.
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
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;
}
}
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
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
× 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.