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 :

Le jeu des 4 Toupies


Sujet :

NodeJS

  1. #1
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2014
    Messages : 17
    Par défaut Le jeu des 4 Toupies
    Bonjour,
    J'ai une problématique assez simple. Seulement je ne sais pas par quel bout prendre le sujet.
    Imaginez que vous ayez une plateau de 10 cases sur 10 cases. Sur ce plateau, on veut faire avancer 4 toupies.
    Pour chacune d'elle on a
    - un point de départ
    - une direction (N,S,E,O)
    - et un pas d'avancement.
    On souhaite que les 4 toupies avancent en même temps.
    Les informations de chaque toupie sont contenu dans un Json.
    Ma question : comment procéder pour lancer les 4 toupies ensemble ?
    Merci à vous,
    Franck
    Voici un exemple :
    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
     
    [
      {"toupie1" : 
      [{
        "depart" : "54"
      },
      {
        "direction" : "N1S2E1O2"
      }]
    },
      {"toupie2" : 
      [{
        "depart" : "23"
      },
      {
        "direction" : 
        "N1S2E1O2"
      }]
    }
    ]

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 212
    Par défaut
    Bonjour,
    le rapport avec NodeJs

    Ma question : comment procéder pour lancer les 4 toupies ensemble ?
    Sinon tu as la possibilité de les lancer dans une boucle.

  3. #3
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2014
    Messages : 17
    Par défaut
    le rapport avec NodeJs
    Bonjour, le rapport avec Node ? Simplement parce que le projet se fait sous Node. Peut-être existe-t-il une particularité sous Node que je n'ai pas envisagé.
    Sinon tu as la possibilité de les lancer dans une boucle.
    C'est justement ce a quoi je pensais. Ce qui signifie qu'elles démarreront avec un laps de temps différé et non toutes ensemble.
    Merci pour ta réponse.
    Franck

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 212
    Par défaut
    un laps de temps différé et non toutes ensemble
    cela va se jouer à quelques millisecondes et je ne pense pas que tu puisses obtenir, avec un « multithread » éventuel, une synchronisation parfaite.

  5. #5
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2014
    Messages : 17
    Par défaut
    Merci beaucoup pour tes réponses.

  6. #6
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 101
    Par défaut
    Dans une logique couramment utilisée en développement de jeux vidéo, deux évènements sont considérés simultanés s’ils se produisent à la même frame. Les navigateur exposent la fonction requestAnimationFrame qui utilise généralement(*) une fréquence de 60 frames par secondes (FPS), ce qui donne environ 16.67 ms de temps de calcul disponible par frame.

    Ce temps de calcul est largement suffisant pour :
    • faire une boucle à 4 itérations qui lit des infos dans un JSON ;
    • redessiner 4 images dans un canvas.


    En générale, les fonctions de dessin sont les plus coûteuses, et quand on voit ce que peuvent faire certains jeux utilisant les canvas, on constate que la marge est généreuse.

    Tu peux utiliser le « profileur » (analyseur de performances) de la console F12 pour voir en combien de temps s’exécute ton code.

    (*) En fait, elle se cale sur la fréquence de l’écran, qui est parfois de 120 Hz. Mais il y a toujours moyen de contrôler la « vitesse » du script, par exemple en comparant les timestamp de deux frames successives, et en décidant de ne rien faire si la différence est trop petite.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  7. #7
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2014
    Messages : 17
    Par défaut
    Merci beaucoup pour ces éclaircissements. Seulement mon problème n'a pas été résolu.
    En considérant le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for (toupie of toupies){
     execCode(toupie);
    }
    Ma boucle est synchrone. ;-(
    J'e vois d'abord le défilement de la première puis de la seconde,...
    Je me rends compte que je ne sais pas comment lancer les 4 toupies en même temps .
    Pour c'est plus du JS que du Node. Si besoin, je peux reposer ma question dans le forum JS.
    Merci pour tes réponses,
    Franck

  8. #8
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 101
    Par défaut
    Citation Envoyé par fsebbah Voir le message
    Ma boucle est synchrone. ;-(
    En effet. Mais ce n’est pas un problème. Tout se passe à la même frame, et tu peux raisonnablement considérer que c’est simultané.

    Pour c'est plus du JS que du Node.
    Node est JS.

    Je ne comprends pas bien pourquoi tu tiens tant à ce que les toupies soient lancées en même temps. D’abord, ça veut dire quoi « en même temps » ? Einstein a démontré que le concept même de simultanéité est une illusion. Même en environnement multithreadé, ce concept n’existe pas vraiment :
    • soit les instructions en code machine s’exécutent sur un seul cœur, et dans ce cas elles ont lieu les unes à la suite des autres ;
    • soit elles ont lieu en parallèle sur deux cœurs différents, et dans ce cas il n’y a pas moyen de savoir si elles ont lieu exactement au même moment. Les cœurs ne se synchronisent que lors de « rendez-vous » qui ne doivent pas avoir lieu trop souvent car ils cassent l’avantage du parallélisme.


    Cela étant dit, si tu veux absolument avoir des lancers de toupies concurrents sur différents threads, alors JS (ou Node) n’est pas la techno la plus adaptée pour ça. Je te conseillerais de jeter un œil à Rust.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

Discussions similaires

  1. Réponses: 7
    Dernier message: 12/10/2006, 01h23
  2. [DVP] Jeu des 24 familles
    Par pcaboche dans le forum La taverne du Club : Humour et divers
    Réponses: 254
    Dernier message: 09/08/2006, 15h21
  3. [JeudeForum] Jeu des smileys
    Par sourivore dans le forum Web
    Réponses: 26
    Dernier message: 05/07/2006, 16h13
  4. [algo et C] Jeu des dés en C
    Par bosz28 dans le forum C
    Réponses: 10
    Dernier message: 12/10/2005, 11h48

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