Partage
  • Partager sur Facebook
  • Partager sur Twitter

Le jeu de la vie

Utiliser la fonction random pour remplir mon tableau

    10 janvier 2018 à 19:25:20

    Bonjour,

    Je dois créer le jeu de la vie et je n'arrive pas à introduire la fonction "random" dans la procédure d'initialisation (de remplissage) d'un tableau en 0 ou 1 de façon aléatoire.

    Merci d'avance.

    -
    Edité par SYONOféfé 14 janvier 2018 à 13:47:01

    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      10 janvier 2018 à 19:44:32

      Mais encore ?

      Règles pour poster
      
      Pour poser une question, merci de créer un nouveau sujet et de respecter les règles suivantes.
      
          Votre titre doit dire ce que vous cherchez à faire, et le sous-titre ce qui vous pose problème. Si vous utilisez une bibliothèque, indiquez-la dans le titre.
          Votre question doit comporter des formules de politesse : bonjour, merci d'avance.
          Vous devez poster votre code, coloré et si possible indenté. Évitez les images, utilisez bouton > du formulaire (c.f. ci-dessous).
          Vous devez clairement expliquer votre problème : donner la description du bug, copier/coller le message d'erreur. Code coloré
      
      Toute question ne respectant pas ces règles sera fermée.
      
      En outre, tout post au contenu illégal, insultant, publicitaire, hors-sujet ou provocateur sera supprimé et son auteur sanctionné.
      Demandes de codes ou de solutions
      
      Nous ne donnons pas de code tout fait sur les forums : nous vous aidons à construire le votre, en vous expliquant et en corrigeant vos erreurs. Si vous posez une question, merci de toujours montrer ce que vous avez essayé de faire, même si c'est faux. Si vous oubliez, on vous le demandera : ne le prenez pas mal, c'est normal et nécessaire pour bien vous répondre.
      
      Si vous répondez aux questions des autres, merci de ne pas poster de code tout fait. Corrigez plutôt les codes que les débutants postent, ou donnez-leur des indices s'ils ne savent pas comment démarrer. Ce sera bien plus bénéfique pour eux. <img src="/bundles/tinymce/vendor/tiny_mce/plugins/emotions/img/smile.png" title=":)" alt=":)" />
      

      https://openclassrooms.com/forum/sujet/regles-de-ce-forum-a-lire-avant-de-poster-1

      • Partager sur Facebook
      • Partager sur Twitter
        12 janvier 2018 à 12:41:55

        Bonjour,

        En gros tu veux une méthode, qui sort 1 ou 0 aléatoirement ?


        int min = 0;
        int max = 1;
        
        int random = ThreadLocalRandom.current().nextInt(min, max + 1);

        Voilà
        • Partager sur Facebook
        • Partager sur Twitter
          13 janvier 2018 à 12:07:17

          en fait il faut que j'introduise ma fonction random dans une procédure mais je ne vois pas comment faire. 

          • Partager sur Facebook
          • Partager sur Twitter
            13 janvier 2018 à 16:35:57

            D'accord,

            Donne moi le début de ta fonction ou alors ce qu'elle doit faire.
            • Partager sur Facebook
            • Partager sur Twitter
              14 janvier 2018 à 13:19:48

              Voilà mon début de code, mais je ne sais pas s'il est bon, ensuite je bloque au moment ou il faut introduire la fonction random, pour déclarer 0 ou 1 de manière aléatoire.
              void main(){
                    //création de deux tableau de 100 par 100
                    int [][] tableau1 = new int [100][100];
                    int [][] tableau2 = new int [100][100];
                   initialisation(tableau1, tableau2);
              }
              void initialisation (int [][]tableau1, int[][]tableau2){
                    int i, j;
                    int n ;
                    for (i = 0; i < 100; i ++);{
                    for (j = 0; j < 100; j ++);{
                    n = readInteger();
                    tableau1[i][j] = n;
                   println(tableau1[i][j]);
                    tableau2[i][j] = n;
                   println(tableau2[i][j]);
                  }}
              }
              Merci d'avance.
              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                14 janvier 2018 à 13:40:41

                (J'ai lié les règles du forum, ce serait cool de les lire avant de continuer à répondre, typiquement pour savoir comment insérer du code)

                • Partager sur Facebook
                • Partager sur Twitter
                  14 janvier 2018 à 13:45:41

                  Voilà mon début de code, mais je ne sais pas s'il est bon, ensuite je bloque au moment ou il faut introduire la fonction random, pour déclarer 0 ou 1 de manière aléatoire.
                  void main(){
                        //création de deux tableau de 100 par 100
                        int [][] tableau1 = new int [100][100];
                        int [][] tableau2 = new int [100][100];
                       initialisation(tableau1, tableau2);
                  }
                  void initialisation (int [][]tableau1, int[][]tableau2){
                        int i, j;
                        int n ;
                        for (i = 0; i < 100; i ++);{
                        for (j = 0; j < 100; j ++);{
                        n = readInteger();
                        tableau1[i][j] = n;
                       println(tableau1[i][j]);
                        tableau2[i][j] = n;
                       println(tableau2[i][j]);
                      }}
                  }
                  Merci d'avance.
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Anonyme
                    14 janvier 2018 à 13:54:28

                    Sinon, pourquoi avoir 2 tableaux de 2 dimensions ?

                    • Partager sur Facebook
                    • Partager sur Twitter
                      14 janvier 2018 à 14:42:36

                      A deux dimensions représente toutes les cases du jeu de la vie, et il faut 2 tableaux car le premier applique les règles du jeu de la vie et chaque résultat du premier tableau est copié dans le second tableau (celui-ci contient la position des pixels de la grille), c'est mon prof qui m'avait dit de faire ça.
                      • Partager sur Facebook
                      • Partager sur Twitter
                      Anonyme
                        14 janvier 2018 à 15:31:48

                        Tu devrais faire un tableau unidimensionnel, c'est plus léger, rapide, algorithmiquement-parlant simple (plus simple à parcourir, beaucoup plus facile à gérer en cas de gestion de mémoire dynamique etc) et c'est tout aussi facile à travailler.

                        Pour accéder à une case à x, y, ça devient simplement tab[y*width + x] au lieu detab[y][x] et c'est la seule différence négative qu'il y a.

                        -
                        Edité par Anonyme 14 janvier 2018 à 15:32:26

                        • Partager sur Facebook
                        • Partager sur Twitter
                          15 janvier 2018 à 0:19:02

                          Artemix a écrit:

                          beaucoup plus facile à gérer en cas de gestion de mémoire dynamique 

                           En Java, gestion de la mémoire ? Et c'est clairement plus simple pour la relecture d'utiliser un tableau à deux dimensions

                          Pour la fonction d'initialisation:

                          void initialisation (int[][] t1, int[][] t2){
                              for (int i = 0; i < t1.length ; i++){
                                  for (int j = 0; j < t1[0].length; j++){
                                      t1[i][j] = t2[i][j] = leNombreAleatoireGenerer;
                                  }
                              }
                          }
                          et fait attention aux point virgules derrière tes boucles

                          -
                          Edité par Splintz 15 janvier 2018 à 0:27:35

                          • Partager sur Facebook
                          • Partager sur Twitter
                            20 janvier 2018 à 11:16:35

                            Et au lieu d'utiliser 2 tableaux de int. Tu pourrais utiliser un tableau d'une classe 

                            public class Case{
                              private int premierVersion;
                              private int deuxiemeVersion;
                            
                              public Case(int premierVersion, int deuxiemeVersion){
                                 this.premierVersion = premierVersion;
                                 this.deuxiemeVersion = deuxiemeVersion;
                              }
                            //etc getter et setter
                            }

                            Ou sinon tu peux utiliser un seul tableau de int[100][100][2] comme ça tu accèdes au premier tableau par tab[x][y][0] et au deuxième par tab[x][y][1]

                            S'il vous plait dites moi ce que vous en pensez 

                            • Partager sur Facebook
                            • Partager sur Twitter
                            "Il y a 2 choses infinies : la bêtise humaine et l'univers. Pour ce qui est de l'univers je ne suis pas sûr" Albert Einstein

                            Le jeu de la vie

                            × 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