IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

message quand tableau trié


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 63
    Points : 30
    Points
    30
    Par défaut message quand tableau trié
    Bonsoir,

    dans la fonction ci dessous, je souhaite ouvrir une fenêtre de message et réinitialiser la partie dès que le tableau est trié.
    Pourtant ça ne fonctionne pô...
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    	function clickOnMouton(idOfClickedCell)
    	{
    		alert("this is " + idOfClickedCell + ", with status: " + tabOfMoutons[idOfClickedCell]);
    		var idArrivee = idOfClickedCell;
     
    		if(tabOfMoutons[idOfClickedCell + 1] == 0 && tabOfMoutons[idOfClickedCell] == 1)
    		{
    			idArrivee = idOfClickedCell + 1;
    			tabOfMoutons[idOfClickedCell] = 0;
    			tabOfMoutons[idArrivee] = 1;
    		}
     
    		else if(tabOfMoutons[idOfClickedCell + 2] == 0 && tabOfMoutons[idOfClickedCell] == 1)
    		{
    			idArrivee = idOfClickedCell + 2;
    			tabOfMoutons[idOfClickedCell] = 0;
    			tabOfMoutons[idArrivee] = 1;
    		}
    		else
    		{
    			if(tabOfMoutons[idOfClickedCell - 1] == 0 && tabOfMoutons[idOfClickedCell] == 2)
    			{
    				idArrivee = idOfClickedCell - 1;
    				tabOfMoutons[idOfClickedCell] = 0;
    				tabOfMoutons[idArrivee] = 2;
    			}
     
    			else if(tabOfMoutons[idOfClickedCell - 2] == 0 && tabOfMoutons[idOfClickedCell] == 2)
    			{
    				idArrivee = idOfClickedCell - 2;
    				tabOfMoutons[idOfClickedCell] = 0;
    				tabOfMoutons[idArrivee] = 2;
    			}
    			else
    				alert("Choisissez un mouton en bonne position ");
     
    		}
     
    		drawTable();
    		if (tabOfMoutons == [2,2,2,0,0,0,0,1,1,1])
    		{
    			alert("c'est gagné!!");
    			initializeGame();
    		}	
    	}
    J'ai essayé en faisant une troisième boucle imbriquée mais c'est pareil...
    Si quelqu'un à une idée...

    D'ailleurs, peut on créer une div automatiquement à ce moment plutôt qu'une boîte?

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 63
    Points : 30
    Points
    30
    Par défaut
    Bonjour,

    pour la div, je crois savoir comment en jouant sur le style (hidden) mais ça rentre dans le même "if" qui confirme que le tableau a bien cette configuration (trié).
    Je ne comprends pas pourquoi ça ne le prend pas en compte...

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 63
    Points : 30
    Points
    30
    Par défaut
    re bonjour,

    j'ai fait une fonction verifyGame() avec des messages alert mais ça ne dit pas si ça a gagné...
    Si quelqu'un sait...

    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
    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
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    	<script type="text/javascript">
     
    	var tabOfMoutons = new Array();
    	 //var idOfCurrentlySelectedMouton = -1; (inutilisé ici)
     
    	function initializeGame()
    	{
    		tabOfMoutons = [0,1,1,1,0,0,2,2,2,0];
    		drawTable();
    	}
     
    	function verifyGame()
    	{
    	var cGagne = false;
    		if(tabOfMoutons == [2,2,2,0,0,0,0,1,1,1])
    		{
    			cGagne = true;
    			alert("c'est gagné!!");
    			initializeGame();	
    		}
    		else
    		{
    		alert("A vous de jouer");
    		cGagne = false;
    		}
    	}
     
     
     
    	function clickOnMouton(idOfClickedCell)
    	{
    		alert("this is " + idOfClickedCell + ", with status: " + tabOfMoutons[idOfClickedCell]);
    		var idArrivee = idOfClickedCell;
     
    		if(tabOfMoutons[idOfClickedCell + 1] == 0 && tabOfMoutons[idOfClickedCell] == 1)
    		{
    			idArrivee = idOfClickedCell + 1;
    			tabOfMoutons[idOfClickedCell] = 0;
    			tabOfMoutons[idArrivee] = 1;
    		}
     
    		else if(tabOfMoutons[idOfClickedCell + 2] == 0 && tabOfMoutons[idOfClickedCell] == 1)
    		{
    			idArrivee = idOfClickedCell + 2;
    			tabOfMoutons[idOfClickedCell] = 0;
    			tabOfMoutons[idArrivee] = 1;
    		}
    		else
    		{
    			if(tabOfMoutons[idOfClickedCell - 1] == 0 && tabOfMoutons[idOfClickedCell] == 2)
    			{
    				idArrivee = idOfClickedCell - 1;
    				tabOfMoutons[idOfClickedCell] = 0;
    				tabOfMoutons[idArrivee] = 2;
    			}
     
    			else if(tabOfMoutons[idOfClickedCell - 2] == 0 && tabOfMoutons[idOfClickedCell] == 2)
    			{
    				idArrivee = idOfClickedCell - 2;
    				tabOfMoutons[idOfClickedCell] = 0;
    				tabOfMoutons[idArrivee] = 2;
    			}
    			else
    				alert("Choisissez un mouton en bonne position ");
     
    		}
    		/*if (tabOfMoutons == [2,2,2,0,0,0,0,1,1,1])
    		{
    			alert("c'est gagné!!");
    			initializeGame();
    		}*/	
    		drawTable();
     
    	}	
     
     
    	function drawTable()
    	{
    		verifyGame(); 
    		/*teste avant de lancer la fonction si le tableau est rangé 
    		alert("a vous de jouer") fonctionne
    		alert("c'est gagné") fonctionne pas*/
     
    		var tableContentString = "<tr>";
    		for(var i=0; i<tabOfMoutons.length; i++)
    		{
    			if (tabOfMoutons[i] == 1)
    				tableContentString += "<td onclick='clickOnMouton(" + i + ");'><img src='mouton1.png' onmouseover=src='mouton12.png' onmouseout=src='mouton1.png' alt='' witdth=6em id='m1'/>";
     
    			else if (tabOfMoutons[i] == 2)
    				tableContentString += "<td onclick='clickOnMouton(" + i + ");'><img src='mouton2.png' onmouseover=src='mouton22.png' onmouseout=src='mouton2.png' alt='' witdth=6em id='m2'/>";
     
    			else 
    				tableContentString += "<td onclick='clickOnMouton(" + i + ");'><img src='' witdth=6em id='m0'/>"; 
     
    			tableContentString += "</td>";	
    		}
     
    		tableContentString += "</tr>";
     
    		var tableElement = document.getElementById('moutonTable');
    		tableElement.innerHTML = tableContentString;
    	}
     
     
     
    	</script>

  4. #4
    Membre actif Avatar de John Blobsmith
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 198
    Points : 223
    Points
    223
    Par défaut
    Si l'alert n'est pas executé c'est soit qu'il y a une erreur javascript, soit que ton test n'est pas bon. Quant je vois ton test je me demande comment ça peut marcher.

    Dans beaucoup de langages, quant tu compare 2 tableaux de la sorte, le système va comparer l'adressage du tableau et non le contenu.

  5. #5
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 961
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 961
    Points : 44 133
    Points
    44 133
    Par défaut
    Bonjour,
    pour t'en convaincre testes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var tab =  [2,2,2,0,0,0,0,1,1,1];
    alert( tab == [2,2,2,0,0,0,0,1,1,1]);

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 63
    Points : 30
    Points
    30
    Par défaut
    Bonjoir,

    Merci de vos réponses.
    Voilà donc une solution qui marche mais qui ne me plaît pas trop.
    Si quelqu'un à une idée plus "pro" je suis preneur, moi je débute tout juste.
    J'aurai bien voulu une fonction avec un "return" pour faire joli.
    (Après tout c'est noël, je peux toujours demander ).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function verifyGame()
    	{
    		for(var i=0; i<tabOfMoutons.length; i++)
    		{
    			if(tabOfMoutons[0]==2 && tabOfMoutons[1]==2 && tabOfMoutons[2]==2)
    			{	
    			alert("c'est gagné!!");
    			initializeGame();	
    			}
    		}
    	}

  7. #7
    Membre actif Avatar de John Blobsmith
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 198
    Points : 223
    Points
    223
    Par défaut
    Un retour sert à rien si t'a pas d'information spécifique à retourner. Par contre je ne sais pas dans quelle mesure tu pourrai mettre un "break;" dans ton if. Si tu a trouvé une première fois ce que tu cherche il n'est peut être pas nécessaire de continuer à parcourir le tableau...

  8. #8
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  9. #9
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 961
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 961
    Points : 44 133
    Points
    44 133
    Par défaut
    Voilà donc une solution qui marche mais qui ne me plaît pas trop.
    et pour cause dans ta boucle tu ne vérifies que les 3 premières valeurs de ton tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for (var i = 0; i < tabOfMoutons.length; i++) {
      if (tabOfMoutons[0] == 2 && tabOfMoutons[1] == 2 && tabOfMoutons[2] == 2) {
        alert("c'est gagné!!");
        initializeGame();
      }
    }
    ...aucune prise en compte du compteur i dans ton code

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 63
    Points : 30
    Points
    30
    Par défaut
    @ NoSmoking, je ne teste que les trois premières cases du tableau car cela veut dire que les trois moutons qui étaient à droite sont bien positionnés à gauche et donc tous bien passés.
    Donc à la limite, je peux faire la boucle for sur i<tabOfMoutons.length - 6; si ça existe mais sur un petit tableau comme ça je ne verrai pas de différence.

    Pour le alert, j'ai remplacé par une fonction jouant sur le display d'une div, c'est plus joli et je ne relance pas automatiquement la partie, ce qui est moins abrupte.

    Merci pour les liens d'information.

    J'ai pensé aussi aux switch/ break, why not, faudra que je pense à tous les cas. Si je le fais : je le poste pour l'info.

  11. #11
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 961
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 961
    Points : 44 133
    Points
    44 133
    Par défaut
    @ NoSmoking, je ne teste que les trois premières cases du tableau car cela veut dire que les trois moutons qui étaient à droite sont bien positionnés à gauche et donc tous bien passés.
    Donc à la limite, je peux faire la boucle for sur i<tabOfMoutons.length - 6; si ça existe mais sur un petit tableau comme ça je ne verrai pas de différence.
    tu n'as dans ce cas AUCUNE boucle à faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (tabOfMoutons[0] == 2 && tabOfMoutons[1] == 2 && tabOfMoutons[2] == 2) {
      alert("c'est gagné!!");
      initializeGame();
    }
    suffit largement.

  12. #12
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 63
    Points : 30
    Points
    30
    Par défaut
    @ NoSmoking:
    je venais de me dire la même chose. si si j'vous jure.
    Thanks

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Plugin] Tablesorter message quand tableau vide
    Par LhIaScZkTer dans le forum jQuery
    Réponses: 1
    Dernier message: 14/12/2012, 11h47
  2. Réponses: 6
    Dernier message: 05/01/2006, 14h23
  3. tableau trié
    Par devdébuto dans le forum C
    Réponses: 3
    Dernier message: 07/11/2005, 18h00
  4. [Tableau][TRI] Tri d'un String[]
    Par zakir dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 17/03/2005, 17h31
  5. URGENt: recherche dans un tableau trié par ordre alphabetiqu
    Par JulPop dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 12/02/2005, 17h21

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