Problème Processing Bataille Navale

Problème Processing Bataille Navale - Java - Programmation

Marsh Posté le 15-05-2016 à 12:43:08    

Bonjour à tous,
 
J'ai un petit soucis pour ma bataille navale :
 
j'en suis à l'étape du placement des bateaux. Donc j'ai déclaré une variable, et à chaque fois que la variable change de valeur, on place un autre type de bateau (donc jusqu'à NombresDeBateaux=5)
Le problème étant que la programme reste bloqué au premier bateau, et que l'on ne peut donc placer que le premier type de bateau (celui à 2 de longueur).
 
Pouvez-vous m'aider ?
Merci
 
Voici le code :
 

Code :
  1. int[][] Tableau1;
  2. int[][] Tableau2;
  3. int Taille = 60;
  4. int NbrColonnes = 10;
  5. int NbrLignes = 10;
  6. int NombresDeBateaux = 0;
  7. PImage FondJeu;
  8. PImage FondAccueil;
  9. int MomentDuJeu;
  10. void setup() {
  11.   size (1300, 750);
  12.   MomentDuJeu = 0;
  13.   CreationDesTableaux();
  14. }
  15. void CreationDesTableaux() {
  16.   Tableau1 = new int[NbrColonnes][NbrLignes];
  17.   Tableau2 = new int[NbrColonnes][NbrLignes];
  18.   for (int Colonne = 0; Colonne < NbrColonnes; Colonne++) {
  19.     for (int Ligne = 0; Ligne < NbrLignes; Ligne++) {
  20.       Tableau1[Colonne][Ligne] = 0;
  21.       Tableau2[Colonne][Ligne] = 0;
  22.     }
  23.   }
  24. }
  25. void draw() {
  26.   PartieEnCours();
  27. }
  28. void PartieEnCours() {
  29.   if (MomentDuJeu == 0) { 
  30.     FondAccueil = loadImage("Bateau_fun.jpg" );
  31.     image(FondAccueil, 0, 0, width, height);
  32.     textSize(40);
  33.     fill(0);
  34.     text("Appuyez sur la barre d'espace pour lancer la partie !", 200, 560);
  35.     textSize(60);
  36.     fill(255, 255, 0);
  37.     text("BATAILLE NAVALE", 400, 100);
  38.     if (keyPressed && key == ' ') MomentDuJeu = 1;
  39.   }
  40.   if (MomentDuJeu == 1) {
  41.     AffichageImageDebut();
  42.     AffichageDesTableaux();
  43.     AffichageDesCoordonnees();
  44.     PlacementDesBateaux();
  45.   }
  46. }
  47. void AffichageImageDebut() {
  48.   FondJeu = loadImage("Eau.jpg" );
  49.   image(FondJeu, 0, 0, width/2, height);
  50.   image(FondJeu, width/2, 0, width/2, height);
  51. }
  52. void AffichageDesTableaux() {
  53.   textSize(Taille);
  54.   image(FondJeu, 0, 0, width/2, height);
  55.   image(FondJeu, width/2, 0, width/2, height);
  56.   for (int Colonne = 0; Colonne < NbrColonnes; Colonne++) {
  57.     for (int Ligne = 0; Ligne < NbrLignes; Ligne++) {
  58.       int ContenuCase1 = Tableau1[Colonne][Ligne];
  59.       int ContenuCase2 = Tableau2[Colonne][Ligne];
  60.       if (ContenuCase1 == 0) fill(0, 0, 255);
  61.       if (ContenuCase1 == 1) fill(0, 255, 0);
  62.       if (ContenuCase1 == 2) fill(255, 0, 0);
  63.       if (ContenuCase1 == 3) fill(0);
  64.       if (ContenuCase2 == 0) fill(0, 0, 255);
  65.       if (ContenuCase2 == 1) fill(0, 255, 0);
  66.       if (ContenuCase2 == 2) fill(255, 0, 0);
  67.       if (ContenuCase2 == 3) fill(0);
  68.       text(ContenuCase1, Taille * Colonne, Taille * (Ligne+1) ); //!\\
  69.       text(ContenuCase2, Taille * Colonne + ((width/2)+60), Taille * (Ligne+1) );
  70.     }
  71.   }
  72. }
  73. void AffichageDesCoordonnees() {
  74.   fill(0);
  75.   strokeWeight(3);
  76.   stroke(0);
  77.   text("A", 0, 670);
  78.   text("B", 60, 670);
  79.   text("C", 120, 670);
  80.   text("D", 180, 670);
  81.   text("E", 240, 670);
  82.   text("F", 300, 670);
  83.   text("G", 360, 670);
  84.   text("H", 420, 670);
  85.   text("I", 490, 670);
  86.   text("J", 550, 670);
  87.   text("1", 620, 60);
  88.   text("2", 620, 120);
  89.   text("3", 620, 180);
  90.   text("4", 620, 240);
  91.   text("5", 620, 300);
  92.   text("6", 620, 360);
  93.   text("7", 620, 420);
  94.   text("8", 620, 480);
  95.   text("9", 620, 540);
  96.   text("10", 600, 600);
  97.   text("A", 710, 670);
  98.   text("B", 770, 670);
  99.   text("C", 830, 670);
  100.   text("D", 890, 670);
  101.   text("E", 950, 670);
  102.   text("F", 1010, 670);
  103.   text("G", 1070, 670);
  104.   text("H", 1130, 670);
  105.   text("I", 1200, 670);
  106.   text("J", 1260, 670);
  107.   line(0, 615, 590, 615);
  108.   line(590, 0, 590, 615);
  109.   line(width, 615, 690, 615);
  110.   line(690, 0, 690, 615);
  111. }
  112. void PlacementDesBateaux() {
  113.   int Colonne = (int)(mouseX)/Taille; //on clique dans la colonne qui correspond à la postion de la souris divisée par la taille
  114.   int Ligne = (int)(mouseY)/Taille; //on clique dans la ligne qui correspond à la postion de la souris divisée par la taille
  115.   if (Colonne >= NbrColonnes-1) Colonne = NbrColonnes-1; //!\\
  116.   if (Ligne >= NbrLignes-1) Ligne = NbrLignes-1; //!\\
  117.   println("On place dans la colonne "+(Colonne+1));
  118.   println("On place dans la ligne "+(Ligne+1));
  119.   if (NombresDeBateaux == 0) {
  120.     for (int x = 0; x < NbrColonnes; x++) {
  121.       for (int y = 0; y < NbrLignes; y++) {
  122.         textSize(20);
  123.         fill(255, 0, 0);
  124.         text("Placez votre torpilleur grâce aux flêches directionnelles sur l'écran de gauche ! Le curseur de la souris définit l'origine du bateau.", 40, 700);
  125.         if (keyPressed && keyCode == LEFT) {
  126.           Tableau1[Colonne][Ligne] = 1;
  127.           Tableau1[Colonne - 1][Ligne] = 1;
  128.           NombresDeBateaux++;
  129.         }
  130.         if (keyPressed && keyCode == RIGHT) {
  131.           Tableau1[Colonne] [Ligne] = 1;
  132.           Tableau1[Colonne + 1] [Ligne] = 1;
  133.           NombresDeBateaux++;
  134.         }
  135.         if (keyPressed && keyCode == UP) {
  136.           Tableau1[Colonne][Ligne] = 1;
  137.           Tableau1[Colonne][Ligne - 1] = 1;
  138.           NombresDeBateaux++;
  139.         }
  140.         if (keyPressed && keyCode == DOWN) {
  141.           Tableau1[Colonne] [Ligne] = 1;
  142.           Tableau1[Colonne] [Ligne + 1] = 1;
  143.           NombresDeBateaux++;
  144.         }
  145.       }
  146.     }
  147.   }
  148.   if (NombresDeBateaux == 1) {
  149.     for (int x = 0; x < NbrColonnes; x++) {
  150.       for (int y = 0; y < NbrLignes; y++) {
  151.         textSize(20);
  152.         fill(255, 0, 0);
  153.         text("Placez votre sous-marin grâce aux flêches directionnelles sur l'écran de gauche ! Le curseur de la souris définit l'origine du bateau.", 40, 700);
  154.         if (keyPressed && keyCode == LEFT) {
  155.           Tableau1[Colonne][Ligne] = 1;
  156.           Tableau1[Colonne - 1][Ligne] = 1;
  157.           Tableau1[Colonne - 2][Ligne] = 1;
  158.           NombresDeBateaux++;
  159.         }
  160.         if (keyPressed && keyCode == RIGHT) {
  161.           Tableau1[Colonne] [Ligne] = 1;
  162.           Tableau1[Colonne + 1] [Ligne] = 1;
  163.           Tableau1[Colonne + 2] [Ligne] = 1;
  164.           NombresDeBateaux++;
  165.         }
  166.         if (keyPressed && keyCode == UP) {
  167.           Tableau1[Colonne][Ligne] = 1;
  168.           Tableau1[Colonne][Ligne - 1] = 1;
  169.           Tableau1[Colonne][Ligne - 2] = 1;
  170.           NombresDeBateaux++;
  171.         }
  172.         if (keyPressed && keyCode == DOWN) {
  173.           Tableau1[Colonne] [Ligne] = 1;
  174.           Tableau1[Colonne] [Ligne + 1] = 1;
  175.           Tableau1[Colonne][Ligne + 2] = 1;
  176.           NombresDeBateaux++;
  177.         }
  178.       }
  179.     }
  180.   }
  181.   if (NombresDeBateaux == 2) {
  182.     for (int x = 0; x < NbrColonnes; x++) {
  183.       for (int y = 0; y < NbrLignes; y++) {
  184.         textSize(20);
  185.         fill(255, 0, 0);
  186.         text("Placez votre contre-torpilleur grâce aux flêches directionnelles sur l'écran de gauche ! Le curseur de la souris définit l'origine du bateau.", 40, 700);
  187.         if (keyPressed && keyCode == LEFT) {
  188.           Tableau1[Colonne][Ligne] = 1;
  189.           Tableau1[Colonne - 1][Ligne] = 1;
  190.           Tableau1[Colonne - 2][Ligne] = 1;
  191.           NombresDeBateaux++;
  192.         }
  193.         if (keyPressed && keyCode == RIGHT) {
  194.           Tableau1[Colonne] [Ligne] = 1;
  195.           Tableau1[Colonne + 1] [Ligne] = 1;
  196.           Tableau1[Colonne + 2] [Ligne] = 1;
  197.           NombresDeBateaux++;
  198.         }
  199.         if (keyPressed && keyCode == UP) {
  200.           Tableau1[Colonne][Ligne] = 1;
  201.           Tableau1[Colonne][Ligne - 1] = 1;
  202.           Tableau1[Colonne][Ligne - 2] = 1;
  203.           NombresDeBateaux++;
  204.         }
  205.         if (keyPressed && keyCode == DOWN) {
  206.           Tableau1[Colonne] [Ligne] = 1;
  207.           Tableau1[Colonne] [Ligne + 1] = 1;
  208.           Tableau1[Colonne][Ligne + 2] = 1;
  209.         }
  210.       }
  211.     }
  212.   }
  213.   if (NombresDeBateaux == 3) {
  214.     for (int x = 0; x < NbrColonnes; x++) {
  215.       for (int y = 0; y < NbrLignes; y++) {
  216.         textSize(20);
  217.         fill(255, 0, 0);
  218.         text("Placez votre croiseur grâce aux flêches directionnelles sur l'écran de gauche ! Le curseur de la souris définit l'origine du bateau.", 40, 700);
  219.         if (keyPressed && keyCode == LEFT) {
  220.           Tableau1[Colonne][Ligne] = 1;
  221.           Tableau1[Colonne - 1][Ligne] = 1;
  222.           Tableau1[Colonne - 2][Ligne] = 1;
  223.           Tableau1[Colonne - 3][Ligne] = 1;
  224.           NombresDeBateaux++;
  225.         }
  226.         if (keyPressed && keyCode == RIGHT) {
  227.           Tableau1[Colonne] [Ligne] = 1;
  228.           Tableau1[Colonne + 1] [Ligne] = 1;
  229.           Tableau1[Colonne + 2] [Ligne] = 1;
  230.           Tableau1[Colonne + 3][Ligne] = 1;
  231.           NombresDeBateaux++;
  232.         }
  233.         if (keyPressed && keyCode == UP) {
  234.           Tableau1[Colonne][Ligne] = 1;
  235.           Tableau1[Colonne][Ligne - 1] = 1;
  236.           Tableau1[Colonne][Ligne - 2] = 1;
  237.           Tableau1[Colonne][Ligne - 3] = 1;
  238.           NombresDeBateaux++;
  239.         }
  240.         if (keyPressed && keyCode == DOWN) {
  241.           Tableau1[Colonne] [Ligne] = 1;
  242.           Tableau1[Colonne] [Ligne + 1] = 1;
  243.           Tableau1[Colonne][Ligne + 2] = 1;
  244.           Tableau1[Colonne][Ligne + 3] = 1;
  245.         }
  246.       }
  247.     }
  248.   }
  249.   if (NombresDeBateaux == 5) {
  250.     MomentDuJeu = 2;
  251.   }
  252. }
  253. void mouseMoved() {
  254. println(mouseX, mouseY);
  255. }

Reply

Marsh Posté le 15-05-2016 à 12:43:08   

Reply

Marsh Posté le 15-05-2016 à 17:17:16    

J'y connais rien en java, mais le problème vient de ton incrémentation de NombresDeBateaux, là chaque fois que utilises une flèche clavier, tu incrémentes ta variable.
Pas très logique ça.
 
Pour ça à mon avis que tu rentres pas dans les autres conditions, ta variable doit valoir bien plus que 5.
 
Sinon, ton code est super répétitif, faudrait faire ça dans une boucle, ou fonction séparée pour éviter cette redondance de code.
 
Bon courage  :o  
 


---------------
On croit souvent avoir vu le fond de la stupidité humaine, et il parfois nécessaire qu'on vous rappelle qu'elle n'a pas de fond.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed