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 :

Condition si un élément est déjà dans une liste


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 53
    Points : 15
    Points
    15
    Par défaut Condition si un élément est déjà dans une liste
    hello,

    je suis en train de faire un petit jeu en JS qui consiste a trouver les régions de france via une carte et une serie de questions.

    Dans mon fichier html, je n ai que une suite d area pour creer des zones cliquable sur ma map et tout le reste ce fait en js.

    La partie initialisation des variables et animations de la carte, ce fait comme ceci

    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
     
    	//on ajoute la classe overlay et tooltip à map
    	$('.map').append('<div class="overlay">').append('<div class="tooltip"> lol </div>');
     
    	//on masque le tooltip au demarrage
    	$('.map .tooltip').hide();
     
     
    	//liste des régions
    	var regions =[
    		{name: 'Nord Pas de Calais', slug:'Nord Pas de Calais', result:1},
    		{name: 'Picardie', slug:'Picardie', result:2},
    		{name: 'Haute Normandie', slug:'Haute Normandie', result:3},
    		{name: 'Champagne Ardenne', slug:'Champagne Ardenne', result:4},
    		{name: 'Basse Normandie', slug:'Basse Normandie', result:5},
    		{name: 'Lorraine', slug:'Lorraine', result:6},
    		{name: 'Alsace', slug:'Alsace', result:7},
    		{name: 'Bretagne', slug:'Bretagne', result:8},
    		{name: 'Pays de la Loire', slug:'Pays de la loire', result:9},
    		{name: 'Centre', slug:'Centre', result:10},
    		{name: 'Bourgogne', slug:'Bourgogne', result:11},
    		{name: 'Franche-Comte', slug:'Franche-Comte', result:12},
    		{name: 'Rhone-Alpes', slug:'Rhone-Alpes', result:13},
    		{name: 'Auvergne', slug:'Auvergne', result:14},
    		{name: 'Limousin', slug:'Limousin', result:15},
    		{name: 'Poitou Charente', slug:'Poitou Charente', result:16},
    		{name: 'Aquitaine', slug:'Aquitaine', result:17},
    		{name: 'Midi Pyrenees', slug:'Midi Pyrennees', result:18},
    		{name: 'Languedoc Roussillon', slug:'Languedoc Roussillon', result:19},
    		{name: 'Paca', slug:'Paca', result:20},
    		{name: 'Corse', slug:'Corse', result:21},
    		{name: 'Ile de France', slug:'Ile de France', result:22},
     
    	];
     
    	// array pour poser les questions
    	var questions = regions;
     
    	//tooltip qui suit la souris
    	$(document).mousemove(function(e){
    		$(".map .tooltip").css({
    			top:e.pageY-30,
    			left:e.pageX+30
    		});
    	});
     
     
    	//on passe sur une region
    	$('.map area').mouseover(function(){
    		var index = $(this).index();
    		var left = -index*420 - 420;
    		$('.map .tooltip').html(regions[index].name).stop().fadeTo(500,1);
    		$('.map .overlay').css({
    			backgroundPosition: left+"px 0px "
    		});
     
     
    	});
     
    	//on sort de la region
    	$('.map area').mouseout(function(){
    		$('.map .overlay').css({
    			backgroundPosition: "420px 0px"
    		});
    		$('.map .tooltip').instop().fadeTo(500,0);
    	});
    ensuite, je veut que la question soit posée de facon aleatoire, donc j utilise un random et je pose ma question comme tel

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    // nombre aleatoire entre 1 et 10 pour la question
    	var ran = Math.floor((Math.random() * 21) + 1);
     
    	//initialisation de la question
    	var question = questions[ran].name;
     
    	//question posée
    	$(".question").html("le question est : ou se trouve la " + question + " ?");
    	var index;
    Enfin, la partie centrale du jeu ce trouve ici
    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
     
    $('.map area').click(function(){
    		//l endroit ou l on clique
    		index = $(this).index();
     
    		//bonne réponse
    		var index_click = questions[ran].result; 
     
    		//comparaison entre le click et la question posée
    		if(questions[index].result == index_click){
     
    			//on ajoute dans la liste la question qui vient d etre posee
    			list.push(questions[ran].name);
     
     
    			//boucle pour verification des elements de la liste
    			for (var i=0; i<list.length; i++){
    				$(".click").html("liste vaut :" + list + "</br>");
     
    			}
     
    			//random pour poser une question de maniere aleatoire
    			ran = Math.floor((Math.random() * 21) + 1);
     
    			//variable pour comparer si la question n a pas deja etait posee
    			var compare = questions[ran].name;
     
     
    			for (var i=0; i<21; i++){
    				//si la question a deja etait posee
    				if(list[i] == compare){
    					$(".compare").html("la question a deja etait posee");
    				}
    				else{
    					$(".question").html("le question est : ou se trouve la " + questions[ran].name + " ?");
     
    				}
    			}
    		}
    		else{
    			$(".compare").html("Mauvaise reponse");
    		}
    	});
    Comme je ne veux pas qu une question ne soit posée 2 fois, je verifie si elle a déja était posée.
    Ma verification se passe bien puisqu il me dit que la question a déja etait posée.

    Le problème, ce que je ne vois pas comment je peut faire pour qu il pose une autre question tout de suite derrière qui n a pas deja etait posée.

    PS: pour ceux que cela interèsse, je vous mets le fichier avec mes sources. Se sera surement plus claire

    merkiiiiii
    Fichiers attachés Fichiers attachés
    • Type de fichier : rar map.rar (224,3 Ko, 65 affichages)

  2. #2
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Ton raisonnement est un peu tordu quand même. Quand la blonde de la télé tire les boules du Loto, elle ne s'amuse pas à remettre les boules tirées dans la machine en espérant ne pas retomber dessus juste après.

    Si tu veux un tirage aléatoire, fais un tri aléatoire de ta liste de questions dès le départ, puis parcoure-les dans l'ordre. Voilà une fonction pour mélanger une Array :

    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
    Array.prototype.shuffle = function() {
        var input = this;
     
        for (var i = input.length-1; i >=0; i--) {
     
            var randomIndex = Math.floor(Math.random()*(i+1)); 
            var itemAtIndex = input[randomIndex]; 
     
            input[randomIndex] = input[i]; 
            input[i] = itemAtIndex;
        }
        return input;
    }
     
    // et au début de ton programme :
    questions.shuffle();
    code trouvé sur http://www.kirupa.com/html5/shuffling_array_js.htm
    One Web to rule them all

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 53
    Points : 15
    Points
    15
    Par défaut
    hello,

    ha oui effectivement ton raisonnement est plus interessant et moins fouilli que le mien. Je n avais pas penser a melanger les questions dans l array

    Je vais me lancer dessus des demain et mettrais la correction pour ceux que ca interesse.

    Merci beaucoup Mister

Discussions similaires

  1. [Débutant] Condition IF qui verifie si un string est present dans une list
    Par harghan dans le forum C#
    Réponses: 6
    Dernier message: 13/05/2014, 16h28
  2. Réponses: 4
    Dernier message: 04/05/2012, 19h39
  3. sélectionner un élément par défaut dans une liste déroulante
    Par touf35 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 03/06/2008, 19h08
  4. elements qui n'est pas dans une liste
    Par KEnder dans le forum Général Python
    Réponses: 2
    Dernier message: 16/05/2008, 02h52
  5. [Liste] Savoir si un élément est présent dans une liste
    Par Wookai dans le forum Collection et Stream
    Réponses: 11
    Dernier message: 02/05/2005, 21h44

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