1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    avril 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 21
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : avril 2017
    Messages : 3
    Points : 2
    Points
    2

    Par défaut Initialisation variables dans une boucle for

    Salut tout le monde


    Nom : insidelopp.png
Affichages : 31
Taille : 46,6 KoNom : ouside loop.png
Affichages : 30
Taille : 36,1 Ko j'ai un problème que j'arrive pas à comprendre je fais un jeu de dames et je veux gérer le cases du damier ds un tableau que j'intialise ds ma boucle for
    Mon probleme est qu'en faisant l'affichage dans la boucle tout s'affiche correctement sauf qu'en dehors de la boucle ça alterne les lignes en noir et Blanc et pas les cases

    Voila le bout du code concerné ac des captures du résultat


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    var dame = new Array(10);
    for (var i = 0; i < 10; i++) 
       dame[i] = new Array(10).fill({});
      var i, j;
     
      for (i = 0; i < 10; i++) {
        for (j = 0; j < 10; j++) {
            var n = i * j;
     
            if ( (  ( ( (i%2)==1)&&((j%2)==0)  ) ||  (  ((i%2)==0)  &&  ( (j%2)==1) ))  )  
            {
                console.log("rentré ds le blanc");
     
                dame[i][j].color = 'B';
                dame[i][j].pion = 'N/A'; //Not Allowed
                console.log("i=" + i + "j= " + j + "color= " + dame[i][j].color + "  pion" + dame[i][j].pion);
            } 
            else if ( (  (  ((i%2)==0)  && ((j%2)==0) ) ||  (  (  (i%2)==1 )  &&  ( (j%2)==1) ) )) 
            {
                console.log("rentré ds le noir");
                dame[i][j].color = 'N';
                dame[i][j].pion = 'A/A'; //allowed
                console.log("i=" + i + "j= " + j + "color= " + dame[i][j].color + "  pion" + dame[i][j].pion);
            }
        }
      }
    }

  2. #2
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    juillet 2004
    Messages
    3 945
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : juillet 2004
    Messages : 3 945
    Points : 8 249
    Points
    8 249

    Par défaut

    merci d'utilise le bouton # pour poster du code
    et surtout d'expliquer clairement le bug
    à quelle ligne ça plante

    car là c'est incompréhensible.
    A+

  3. #3
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    avril 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 21
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : avril 2017
    Messages : 3
    Points : 2
    Points
    2

    Par défaut

    Merci pour votre réponse

    En effet je gère mon damier dans un tableau à 2 dimensions dont i parcours les colonnes et j les lignes
    Je souhaite initialiser la couleur e chaque case de ce tableau de noir ou de blanc selon la position.
    Le résultat que je suis sensée avoir est d'alterner en noir et blanc les cases et c'est ce qui est fait lorsque je fait l'affichage dans la boucle.
    Sauf en dehors de la boucle, ça ne s'affiche pas correctement, ça initialise la TOUTE la 1ère ligne à Banc la 2ème à Noir et ainsi de suite, cad que ça change de ce qui a été initialiser dans la boucle malgré que j'initialise le tableau nulle part ailleurs
    J'espère etre plus claire maintenant

  4. #4
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    février 2009
    Messages
    5 550
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : février 2009
    Messages : 5 550
    Points : 20 110
    Points
    20 110
    Billets dans le blog
    34

    Par défaut



    fill() ne convient pas pour un objet, car il met le même objet partout. Voir : https://www.developpez.net/forums/bl...ns-array-from/

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    <!DOCTYPE html>
    <html lang="fr" dir="ltr">
    <head>
      <meta http-equiv="cache-control" content="public, max-age=60">
      <meta charset="utf-8">
      <meta name="viewport" content="width=device-width, initial-scale=1">
      <meta name="author" content="Daniel Hagnoul">
      <title>Test</title>
      <style>
     
      </style>
      <script>
        'use strict';
            
        document.addEventListener( 'DOMContentLoaded', ev => {
          
          
        }, false );
        
        window.addEventListener( 'load', ev => {
     
          function Case( color, pion ){
            this.color = color;
            this.pion = pion;
          }
           
          const
            longueur = 10,
            dame = Array.from( new Array( longueur ), () => Array.from( new Array( longueur ), () => new Case( "grise", "X" ) ) );
           
          /*
           // debug
          dame[1][1].pion = 66;
          dame[5][5].color = "yellow";
          
          // debug
          for ( let [ i, item ] of dame.entries() ){
            for ( let [ j, jtem ] of item.entries() ){
              console.log( i, j, jtem );
            }
          }
          */
          
          for ( let [ i, item ] of dame.entries() ){
            for ( let [ j, jtem ] of item.entries() ){
              if ( ( ( i % 2 == 1 ) && ( j % 2 == 0 ) ) || ( ( i % 2 == 0 ) && ( j % 2 == 1 ) ) ){
                jtem.color = 'B';
                jtem.pion = 'N/A'; //Not Allowed      
              } else if ( ( ( i % 2 == 0 ) && ( j % 2 == 0 ) ) || ( ( i % 2 == 1 ) && ( j % 2 == 1 ) ) ) {      
                jtem.color = 'N';
                jtem.pion = 'A/A'; //allowed
              }
              
              console.log( i, j, jtem );
            }
          }
          
        }, false );
      </script>
    </head>
    <body>
      <main>
     
     
      </main>
    </body>
    </html>

    Blog



    Nota bene : si vous devez être compatible avec les navigateurs obsolètes (IE8 et plus), vous devez convertir les codes ES2015 en ES5 avec Babel.

    FAQ JS Tutoriels JS

    Si un message vous a aidé ou vous semble pertinent, votez pour lui !

Discussions similaires

  1. Probleme dans une boucle for, faisant appel a une fonction
    Par mapotam dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 22/01/2010, 21h41
  2. Probleme de syntaxe dans une boucle for
    Par spoker04 dans le forum VBA Access
    Réponses: 2
    Dernier message: 18/09/2008, 10h12
  3. Réponses: 18
    Dernier message: 25/07/2007, 12h34
  4. initialiser les vertex dans une boucle for
    Par StrikerFred dans le forum DirectX
    Réponses: 10
    Dernier message: 26/09/2006, 10h36
  5. probleme dans un boucle for
    Par accoustic dans le forum Delphi
    Réponses: 2
    Dernier message: 26/08/2006, 10h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo