1. #1
    Membre éprouvé
    Homme Profil pro
    développeur
    Inscrit en
    octobre 2013
    Messages
    945
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : octobre 2013
    Messages : 945
    Points : 1 014
    Points
    1 014

    Par défaut Récupérer des valeurs entrer dans la console et les affecter dans un tableau.

    Bonjour à tous pourriez vous m'aider?

    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
    initGame: function()
    	{
    		let game = new Array();
    		// on instancie
    	    const rl = readline.createInterface({
    	       input: process.stdin,
    	       output: process.stdout
    	   });
     
    	   // on prend les nombres de l'utilisateur
    		while(game.length < 7)
    		{
    			rl.question('Entrer un chiffre (7 au total) ', (number) => {
    			  //si c'est un nombre
    			  if(parseInt(number) === number && number < 50) game.push(number);
    			  rl.close();
    			});
     
    		}
    		return game;
    	}
    J'essaye de récupérer 7 nombres depuis la console. Actuellement j'ai bien Entrer un chiffre mais cela boucle et je ne peux pas entrer de valeur.
    Auriez vue une idée de comment je pourrais procéder?

    Merci.

  2. #2
    Membre expérimenté

    Homme Profil pro
    Développeur multimédia
    Inscrit en
    juillet 2004
    Messages
    894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur multimédia
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : juillet 2004
    Messages : 894
    Points : 1 563
    Points
    1 563
    Billets dans le blog
    1

    Par défaut

    Salut petite proposition :

    Module : gameinit.js
    Code javascript : 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
     
    module.exports = function() {
     
        var obj = {};
     
        obj.multiple = function(questions, callback) {
     
            var response = {};
     
            var pool = function() {
     
                for (i in questions) {
                    obj.unique(questions[i], function(data) {
                        response[i] = data
                        delete questions[i]
                        pool()
                    });
     
                    return;
                }
     
                callback(response);
            }
     
            pool();
        }
     
        obj.unique = function(question, callback) {
            var stdin = process.stdin,
                stdout = process.stdout
     
            stdin.resume()
            stdout.write((question.required == false ? '(Optional) ' : '') + question.info + ": ");
     
            stdin.once('data', function(data) {
                result = data.toString().trim();
     
                if (question.required != false && result == '') {
                    // pose une autre question
                    obj.unique(question, callback);
                } else {
                    // Retourne le resultat via le callback
                    stdin.pause();
                    if (parseInt(result) === result && result < 50) {
                        callback(result);
                    } else {
                        // on met dans le tableau 0 si les valeurs ne sont pas numérique et supérieur à 50
                        callback(0);
                    }
     
                }
            })
        }
     
        return obj;
    }()

    Ensuite tu charge ce module via un require dans ta page test est tu fait :

    index.js
    Code javascript : 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
     
    var questions = require('./gameinit.js');
     
    var initGame = function() {
        let questionsListes = {};
        var type = (type === "") ? 'number' : type;
     
        // on prend les nombres de l'utilisateur
        for (var i = 0; i < 7; i++) {
     
            questionsListes[i] = { 'info': 'Entrer un chiffre (' + (i + 1) + '/7 au total)', 'type': 'number' };
     
        }
     
        return questionsListes;
    }
     
    /*
    {
        0: { info: 'Question1?' },
        1: { info: 'Question2?' },
        2: { info: 'Question3?', required: false, type: 'number' } ... plus quelques options tu peux affiner a ce niveau en vue d'autre pools ... etc
    }
    */
    questions.multiple(initGame(), function(result) {
        console.log(result);
    })

  3. #3
    Membre éprouvé
    Homme Profil pro
    développeur
    Inscrit en
    octobre 2013
    Messages
    945
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : octobre 2013
    Messages : 945
    Points : 1 014
    Points
    1 014

    Par défaut

    Merci,

    Je fais comme ça
    app.js
    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
     
    var loto = require("./module/loto.js");
     
    var readline = require('readline'),
    rl = readline.createInterface(process.stdin, process.stdout);
     
    let numberList = new Array();
    let numberQuestion = 1;
     
     
    rl.setPrompt('Taper Entrer puis entrer vos nombres> ');
    rl.prompt();
     
     
    rl.on('line', function(line) {
        switch(line.trim()) {
            default:
                if(parseInt(line) == line && line < 50)
    			{
    				numberList.push(line);
    				numberQuestion --;
    			}
    			if(numberQuestion == 0)
    			{
    				loto.game(numberList);
    				process.exit(0);
    			}
            break;
        }
    }).on('close', function() {
        process.exit(0);
    });
    loto.js
    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
    const readline = require('readline');
    const rand = require('random');
    const async = require('async');
     
    module.exports = {
    	//  vérifie si on a gagné
    	winner: function(game, numbersGame, callback)
    	{
    		let nb=0;
    		for(i=0;i<game.length;i++)
    		{
    			for(j=0;j<numbersGame.length;j++)
    		    {
    				if(game[i] = numbersGame[j]) nb++;
    		    }
    		}
    		callback(nb);
    	},
     
    	// retourne un tableau avec des nombres aléatoires
    	numbersGame:function(callback)
    	{
    		let numbersForWin = new Array(7);
    		console.log("Tirage des numéros -> ");
    		// on génère nos nombres
    		while(numbersForWin.length < 7)
    		{
    			nb = parseInt(Math.random()*48+1);
    			if (nb < 50)
    			{			
    				console.log(nb);
    				numbersForWin.push(nb);
    			}
    		}
    		callback(numbersForWin);                          
    	},
     
    	// fonction principale
    	game: function(numberList)
    	{
    		this.numbersGame(function(numbersForWin) {
    			this.winner(numberList, numbersForWin, function(nb) {
    				(nb > 2) ? console.log("Vous avez " + nb + " bon numéro") : console.log("Game over!");
    			});
    		});
    		nb = this.winner(numberList, this.numbersGame());
     
     
    	}
    }
    J'ai une erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.winner is not a function
    pourtant je ne vois pas ou est l'erreur?

    Merci.

  4. #4
    Membre éprouvé
    Homme Profil pro
    développeur
    Inscrit en
    octobre 2013
    Messages
    945
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : octobre 2013
    Messages : 945
    Points : 1 014
    Points
    1 014

    Par défaut

    Finalement, je m'en suis sorti tout seul, j'ai réussi, j'avais quelques erreurs algorithmique et un problème de gestion du modèle non bloquant de nodejs. Je vous node les deux morceaux pour ceux que ça intéresserait.

    app.js

    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
    var loto = require("./module/loto.js");
     
    var readline = require('readline'),
    rl = readline.createInterface(process.stdin, process.stdout);
     
    let numberList = new Array();
    let numberQuestion = 7;
     
     
    rl.setPrompt('Taper Entrer puis entrer vos nombres> ');
    rl.prompt();
     
     
    rl.on('line', function(line) {
        switch(line.trim()) {
          default:
          if(parseInt(line) == line && line < 50)
    			{
    				numberList.push(parseInt(line));
    				numberQuestion --;
    			}
    			if(numberQuestion == 0)
    			{
    				loto.game(numberList);
    				process.exit(0);
    			}
            break;
        }
    }).on('close', function() {
        process.exit(0);
    });
    loto.js
    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
    const readline = require('readline');
    const rand = require('random');
     
    module.exports = {
    	//  vérifie si on a gagné
    	winner: function(game, numbersGame)
    	{
    		console.log(game);
    		console.log(numbersGame);
    		let nb=0;
    		for(i=0;i<game.length;i++)
    		{
    			for(j=0;j<numbersGame.length;j++)
    		   {
    				if(game[i] == numbersGame[j]) nb++;
    		   }
    		}
     
    		if(game.length <= i)
    		{
    			(nb > 2) ? console.log("Vous avez " + nb + " bons numéros") : console.log("Game over!");
    		}
     
    	},
     
    	// retourne un tableau avec des nombres aléatoires
    	numbersGame:function(numberList)
    	{
     
    		let numbersForWin = new Array();
    		console.log("Tirage des numéros -> ");
    		// on génère nos nombres
    		for(var end = 0;end < 7;end++)
    		{
    			nbRand = parseInt(Math.random()*48+1);
    			if (nbRand < 50)
    			{
    				console.log(nbRand);
    				numbersForWin.push(nbRand);
    			}
    		}
     
    		if(end == 7){
    			this.winner(numberList, numbersForWin);
    		}
    	},
     
    	// fonction principale
    	game: function(numberList)
    	{
    		this.numbersGame(numberList);
    	}
    }

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 24/11/2016, 21h16
  2. [Python 2.X] Extraire des valeurs d'un fichier texte pour les mettre dans une matrice
    Par nekcorp dans le forum Général Python
    Réponses: 12
    Dernier message: 22/04/2016, 18h01
  3. Réponses: 2
    Dernier message: 01/07/2009, 09h54
  4. Récupérer des valeurs dans des fichiers html
    Par nico93100 dans le forum Fichiers
    Réponses: 1
    Dernier message: 05/01/2006, 22h46
  5. Récupérer des valeurs de checkbox dans MySQL
    Par digger dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 05/09/2005, 15h58

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