Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
945 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Besoin d'aide en Javascool

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Besoin d'aide en Javascool

n°2314301
Profil sup​primé
Posté le 21-04-2018 à 21:32:30  answer
 

Bonjour, je souhaite avoir de l'aide pour réaliser un programme dans le cadre de l'ISN en terminale S. Je dois réaliser le Jeu de la Vie. Contrairement à ce que j'ai vu sur certains forums, mon professeur ne m'a pas appris beaucoup de choses en javascool et j'avoue que je ne suis pas très à l'aise. J'espère trouver de l'aide de votre part.  
 
Merci
 
Cordialement
 
 
 
 

Code :
  1. void main()
  2. {
  3. // PRESENTATION DU JEU
  4. println("Bonjour à tous ! Aujourd'hui, nous allons jouer au Jeu de la Vie" );
  5. sleep(200);
  6. // CREATION DU TABLEAU
  7. int largeur;
  8. largeur=10
  9. int hauteur;
  10. largeur=10
  11. reset(largeur, hauteur);
  12. // CREATION D'UN TABLEAU
  13. int[][]tableau=new int[largeur][hauteur];
  14. // CREATION DES CELLULES
  15. int cellules;
  16. setPixel(5,3,0);
  17. setPixel(5,4,0);
  18. setPixel(6,3,0);
  19. setPixel(7,3,0);
  20. setPixel(6,5,0);
  21. }
  22. // DEMANDE DU NOMBRE DE GENERATIONS
  23. int generations;
  24. generations=5;
  25. // DEBUT DU PROGRAMME
  26. int r;
  27. r=int generation;
  28. while(generations<=r)
  29. {
  30. for (int i=0; i<largeur; i++){
  31.  for (intj=0; j<hauteur; j++){
  32. // CELLULE DANS LA CASE ?
  33. int situation = getPixel(largeur, hauteur);
  34. // RECHERCHE DES VOISINS EN FONCTION DES COULEURS
  35. int voisin1=getPixel(i-1,j+1);
  36. int voisin2=getPixel(i,j+1);
  37. int voisin3=getPixel(i+1,j+1);
  38. int voisin4=getPixel(i-1,j);
  39. int voisin5=getPixel(i+1,j);
  40. int voisin6=getPixel(i-1,j-1);
  41. int voisin7=getPixel(i,j-1);
  42. int voisin8=getPixel(i+1,j-1);
  43. //
  44. int somme= voisin1 + voisin2 + voisin3 + voisin4 + voisin5 + voisin6 + voisin7 + voisin8;
  45. // SI CELLULE IL Y A  
  46. if (situation==0){
  47. if (somme ==1530){tableau [i][j]=0;}
  48.  else {if (somme==1275) {tableau [i][j]=1;)
  49.   else { tableau [i][j]=0;}
  50.  }
  51.  }
  52. // 1530 = 6 x 255 donc 2 voisins / 1275 = 5 x 255 donc 3 voisins
  53. // SI CELLULE IL N'Y A PAS
  54. else {
  55. if {
  56.  (somme==1275) {tableau [i][j]=1;
  57.    }
  58. else {
  59.     tableau [i][j]=0;
  60.          }
  61.     }
  62. /*ECRITURE DU TABLEAU :  
  63. * 1er : On efface tout
  64. * 2nd : on réécrit le tableau pour mettre à jour les données obtenues
  65. */
  66. /*
  67. // ON EFFACE TOUT
  68. for (int i=0; i<largeur; i++){
  69.  for (intj=0; j<hauteur; j++){
  70. setPixel(i, j, 255);
  71.  }
  72. }
  73. */
  74. }
  75. }


Message édité par gilou le 23-04-2018 à 13:59:57
mood
Publicité
Posté le 21-04-2018 à 21:32:30  profilanswer
 

n°2314334
DDT
Few understand
Posté le 23-04-2018 à 00:41:18  profilanswer
 

1. Utilise les balises [cpp][/cpp] pour formater ton code.
2. Pose des questions précises.
3. Ta variable hauteur n'est pas initialisée
4. Le getPixel(largeur, hauteur) dans ta double boucle me semble suspicieux
5. Tu peux remplacer tes 8 variables voisin par un tableau...


---------------
click clack clunka thunk
n°2314341
Profil sup​primé
Posté le 23-04-2018 à 11:35:43  answer
 

J'ai changé de manière de faire et voici mon programme. Cependant, j'ai un message qui me dit "illegal start of type'  juste après // Réinitialisation de l'écran et je ne vois pas pourquoi ....
 
 

Code :
  1. /* Commentaire à mettre ici avec les règles
  2. */
  3. void main(){
  4. println("Bonjour à tous ! Aujourd'hui, nous allons jouer au Jeu de la vie" );
  5. sleep(100);
  6. println("Ce Jeu fut créé en 1970 par John Horton Conway" );
  7. sleep(100);
  8. // Mise en place des variables
  9. int distance=200; //variable pour la longueur et largeur du tableau
  10. int m=distance/2; //variable pour l'image
  11. // Création d'une image de largeur m et de hauteur m
  12. reset (m,m);
  13. // Création d'un tableau  
  14. int [][] tableau1 = new int[distance][distance];
  15. // Création des cellules aléatoirement
  16. for (int i=0; i<m; i++)
  17. {
  18. for (int j=0; j<m; i++)
  19.  {
  20.   setPixel(i,j,255);
  21.   tableau1[i][j] = random (1,6);
  22.   if (tableau1 [i][j]== 1)
  23.    {
  24.    setPixel(i-r,j-r,0);
  25.    }
  26.  }
  27. }
  28. // Recherche des voisins
  29. int [][] tableau2 = new int[distance][distance];  // second tableau afin de  
  30. int w = 10;  // 10 générations
  31. int c=0;
  32. while (c!=w){        // != signifie le contraire donc ici : tant que c n'est pas égale à w, faire l'action qui est écrite à la suite
  33. for (int i=1; i<distance; i++)
  34.  {
  35.   for (int j=1; j<distance; j++)
  36.   {
  37. int situation=getPixel(i-m,j-m);
  38. int voisin1=getPixel(i-1-r,j-1-r);   //voisin en haut à gauche
  39. int voisin2=getPixel(i-1-r,j-r);  // voisin au dessus
  40. int voisin3=getPixel(i-1-r,j+1-r);  // voisin au dessus à droite
  41. int voisin4=getPixel(i-r,j-1-r);  //voisin a gauche
  42. int voisin5=getPixel(i-r,j+1-r);  //voisin a droite
  43. int voisin6=getPixel(i+1-r,j-1-r);  //voisin en bas à gauche
  44. int voisin7=getPixel(i+1-r,j-r);  //voisin en dessous
  45. int voisin8=getPixel(i+1-r,j+1-r);  //voisin en bas à droite
  46. int somme=voisin1+voisin2+voisin3+voisin4+voisin5+voisin6+voisin7+voisin8;
  47.  }
  48.  }
  49. }
  50. //Si il y a la présence de 1 cellule
  51. if (situation==0)  // 0 correspond a un point noir
  52. {
  53. if (somme==1530)
  54.  {
  55.   tableau [i][j]=1;
  56.  }
  57. else
  58.  {
  59.   if (somme==1275)
  60.    {
  61.     tableau2 [i][j]=1;
  62.    }
  63.   else
  64.    {
  65.     tableau2 [i][j]=0;
  66.    }
  67.  }
  68. }
  69. else
  70. {
  71.  if (total==1275)
  72.   {
  73.    tableau2 [i][j]=1;
  74.   }
  75.  else
  76.   {
  77.    tableau2 [i][j]=0;
  78.   }
  79. }
  80. } // fin de partie
  81. // Réinitialisation de l'écran
  82. for (int i=0; i<m; i++)
  83. {
  84. for (int j=0; j<m; j++)
  85.  {
  86.   setPixel(i,j,255);
  87.  }
  88. }
  89. // Mise en place du tableau 2 en remplaçant le tableau 1
  90. for (int i=0; i<m; i++)
  91. {
  92. for (int j=0; j<m; j++)
  93.  {
  94.   if (tableau2 [i][j]==0)
  95.    {
  96.    setPixel(i-r,jr,0)
  97.    }
  98.  }
  99. }
  100. // Processus pour réaliser le nombre de générations demandés
  101. int process=0;
  102. while ( process!=80)
  103. {
  104. process=process+1  // mécanisme pour ralentir le programme et ne pas afficher instantanément les générations
  105. }
  106. n=n+1;
  107. } // fin du programme
  108. /*
  109. // SI CELLULE IL Y A  
  110. if (situation==0){
  111. if (somme ==1530){tableau [i][j]=0;}
  112.  else {if (somme==1275) {tableau [i][j]=1;)
  113.   else { tableau [i][j]=0;}
  114.  }
  115.  }
  116.    
  117. // 1530 = 6 x 255 donc 2 voisins / 1275 = 5 x 255 donc 3 voisins
  118.  
  119.  
  120. // SI CELLULE IL N'Y A PAS
  121. else {
  122.  
  123. if {
  124.  (somme==1275) {tableau [i][j]=1;
  125.    }
  126. else {
  127.     tableau [i][j]=0;
  128.          }  
  129.     }
  130. */
  131. }


Message édité par gilou le 23-04-2018 à 12:20:01
n°2314352
gilou
Modérateur
Modzilla
Posté le 23-04-2018 à 14:01:53  profilanswer
 

Tu as changé de manière de faire, mais pas tout reporté: il manque la définition de r.
Et le message vient de ce que ton main se termine à la ligne d'avant, ça se voit avec un code bien formaté.
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2314413
Profil sup​primé
Posté le 24-04-2018 à 14:08:55  answer
 

Merci pour ton aide précieuse. Je vais modifier cela. Je vous tiens au courant.  
A+

n°2314421
Profil sup​primé
Posté le 24-04-2018 à 16:25:49  answer
 

J'ai modifié et cela semblait marcher car il n'y avait plus aucune erreur qui s'affichait mais lorsque que j'essaye de compiler, j'ai un message d'erreur de type : Notice: à la boucle while une minuterie de 1ms est ajoutée pour éviter qu'une boucle infinie ne bloque tout.
 
An exception has occurred in the compiler (1.8.0_31). Please file a bug at the Java Developer Connection (http://java.sun.com/webapps/bugreport)  after checking the Bug Parade for duplicates. Include your program and the following diagnostic in your report.  Thank you.
java.lang.NullPointerException
 
etc ....
 

n°2314440
Profil sup​primé
Posté le 24-04-2018 à 18:32:49  answer
 

J'ai tout réinstallé et plus aucun problème. Cependant, toujours un problème a la ligne 81 qui me dit "cannot find symbol" ...

n°2314441
gilou
Modérateur
Modzilla
Posté le 24-04-2018 à 18:33:10  profilanswer
 

Poste donc ton code au complet qu'on puisse avoir une chance de te dire pourquoi, car le débug télépathique ne fait pas partie de mes compétences (en plus je suis même pas programmeur java à part quand je peux pas faire autrement [quand il faut que ça tourne dans une JVM]).
 
A+,


Message édité par gilou le 24-04-2018 à 18:35:07

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2314445
DDT
Few understand
Posté le 24-04-2018 à 18:47:40  profilanswer
 

Je connais pas Java's Cool mais
- tu as du code en dehors de la méthode main()
- tu initialises la variable situation dans une boucle, c'est normal que le symbole n'existe pas en dehors du corps de celle-ci


---------------
click clack clunka thunk
n°2314458
Profil sup​primé
Posté le 24-04-2018 à 23:03:01  answer
 

Je suis bloqué par un "cannot find symbol"? J'ai marqué l'endroit dans le code, c'est vers la fin.
 
 
 
 
/* Jeu de La vie  créé par John Horton Conway en 1970
 *  Programme réalisé par Aurélien Provenchère et Max Morincome, élève de Terminale S
 *  
 *  Régles du jeu:
 *  Si une cellule a 2 ou 3 voisines, elle survit
 *  Si une cellule a moins de 2 voisines elle meurt
 *  Si une cellule a plus de 3 voisines, elle meurt d'étouffement
 *  une cellule naît dans une case vide si cette case est entourée de précisement 3 cellules
 *  Précision : 255 correspond à un point blanc et 0 à un point noir
*/
 
 void main() {
   println("Bonjour à tous ! Aujourd'hui, nous allons jouer au Jeu de la vie" );
   sleep(100);
   println("Ce Jeu fut créé en 1970 par John Horton Conway" );
   sleep(100);
   
   // Mise en place des variables
   
    int distance =200;
   //variable pour la longueur et largeur du tableau
   
    int m = distance /2;
    //variable pour l'image
     
    // Création d'une image de largeur m et de hauteur m
    reset(m, m);
     
   // Création d'un tableau  
    int [][] tableau1 = new int[distance][distance];
    // le premier tableau applique les règles du jeu de la vie
     
   // Création des cellules aléatoirement
    for (int i =0; i < distance; i ++) {
      for (int j =0; j < distance; i ++) {
         setPixel(i, j, 255);
         tableau1[i][j] = random(1, 6);
         if (tableau1 [i][j] == 1) {
            setPixel(i - m, j - m, 0);
         }
      }
   }
   // Recherche des voisins
    int [][] tableau2 = new int[distance][distance];
   // second tableau pour copier chaque résultat du premier tableau    
   
    int w = 10;
   // 10 générations
   
    int c =0; // variable qui sert à réaliser l'action selon le nombre de générations
 
 int situation; // création de la variable pour la suite du programme
 int somme; // création de la variable pour la suite du programme
     
   while (c != w) {
      // != signifie le contraire donc ici : tant que c n'est pas égale à w, faire l'action qui est écrite à la suite
       for (int i =1; i < distance; i ++) {
         for (int j =1; j < distance; j ++) {
           
            situation = getPixel(i - m, j - m);
             
            int voisin1 = getPixel(i -1 - m, j -1 - m);
            //voisin en haut à gauche
             
             int voisin2 = getPixel(i -1 - m, j - m);
            // voisin au dessus
             
             int voisin3 = getPixel(i -1 - m, j +1 - m);
            // voisin au dessus à droite
             
             int voisin4 = getPixel(i - m, j -1 - m);
            //voisin a gauche
             
             int voisin5 = getPixel(i - m, j +1 - m);
            //voisin a droite
             
             int voisin6 = getPixel(i +1 - m, j -1 - m);
            //voisin en bas à gauche
             
             int voisin7 = getPixel(i +1 - m, j - m);
            //voisin en dessous
             
             int voisin8 = getPixel(i +1 - m, j +1 - m);
            //voisin en bas à droite
             
             somme = voisin1 + voisin2 + voisin3 + voisin4 + voisin5 + voisin6 + voisin7 + voisin8;
         }
      }
   }
   //Si il y a la présence de 1 cellule
    if (situation ==0) // 0 correspond a un point noir
    {
      if (somme ==1530) { //1530 = 6 X 255 donc 2 voisins
         tableau1[i][j] =1;   =>>>>> ERREUR
      } else {
         if (somme ==1275) { //1275 = 5 X 255 donc 3 voisins
            tableau2 [i][j] =1;
         } else {
            tableau2 [i][j] =0;
         }
      }
   } else {
      if (total ==1275) {
         tableau2 [i][j] =1;
      } else {
         tableau2 [i][j] =0;
      }
   }
   
   
   // Réinitialisation de l'écran
   for (int i =0; i < distance; i ++) {
      for (int j =0; j < distance; j ++) {
         setPixel(i, j, 255);
      }
   }
   
   // Mise en place du tableau 2 en remplaçant le tableau 1
   for (int i =0; i < distance; i ++) {
      for (int j =0; j < distance; j ++) {
         if (tableau2 [i][j] ==0) {
            setPixel(i - m, j - m, 0);
         }
      }
   }
   
   // Processus pour ralentir le programme pour ne pas afficher tout de suite les générations
   int process =0;
   while (process !=80) {
      process = process +1;
       
   }
   n = n +1;
}
 
// fin du programme
 
 
 

mood
Publicité
Posté le 24-04-2018 à 23:03:01  profilanswer
 

n°2314459
DDT
Few understand
Posté le 25-04-2018 à 00:13:52  profilanswer
 

Et dehors de tes boucles, i et j ne sont pas définies.
 
Je sais pas où tu vas chercher les bouts de code que tu copies/colles mais essaie au moins de comprendre ce que tu veux en faire.


---------------
click clack clunka thunk

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Besoin d'aide en Javascool

 

Sujets relatifs
[Résolu] Aide pour un preg_match_all récalcitrantDemande d'aide pour coller des background
Aide pour regexAide sur une regex
A-t-on vraiment besoin du VBA sur Excel ? Voyez-vous même[Résolu PHP]aide pour passer de preg_replace à preg_replace_callback
aide pour intégration d'une maquette psd avec bootstrap[Résolu] HTML aide pour bout de code
Besoin d'aide su javascool (génération aléatoire d'image) 
Plus de sujets relatifs à : Besoin d'aide en Javascool


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR