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

NodeJS Discussion :

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


Sujet :

NodeJS

  1. #1
    Membre chevronné

    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2013
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 576
    Points : 1 989
    Points
    1 989
    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 chevronné

    Homme Profil pro
    Ingénieur Hospitalier
    Inscrit en
    Juillet 2004
    Messages
    993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Hospitalier
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 993
    Points : 1 768
    Points
    1 768
    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 chevronné

    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2013
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 576
    Points : 1 989
    Points
    1 989
    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 chevronné

    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2013
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 576
    Points : 1 989
    Points
    1 989
    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 Langage
    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