Partage
  • Partager sur Facebook
  • Partager sur Twitter

Conception JS

    9 novembre 2011 à 14:57:06

    Bonjour,

    Aujourd'hui, je n'ai pas de problème (alors qu'est ce que je fout ici ?) ...

    C'est plutot une question, un choix a faire dans la conception d'un jeu de type board en JavaScript (cf tout mes post précédent ...)

    Ce jeu est le yinsh, un jeu bizarre auquel je n'ai pas encore compris trop les règles, mais elle ne nous interesse pas ici.
    Dans ce jeu, on a un plateau bizarre, des anneaux et des marqueurs ( http://www.ludoversum.de/cgi-bin/lv_pi [...] le=brett3.jpg )

    Pour l'instant, j'ai 3 classe Board, Ring et Mark. et comme vous pouvez le constaté:


    J'ai conceptualisé de la sorte pour l'instant:
    J'ai une tableau de 11 lignes et 11 colonnes avec écris dedans INV dans les case impossible (INV = INVALID) et le reste de V (pour VACANT)

    Ensuite je voudrais votre avis : comment représenter dans le tableau les anneaux et marqueurs ???
    -il y a la première méthode en utilisant des caractères (BR pour BLACK_RING) (WMR pour WHITE_MARK_RING) etc
    -je mets mes objets crée dans les bonnes case du tableau.

    La première solution ne me permet pas d'avoir l'objet en question, et savoir ou il est.
    La deuxième solution ne me permet pas de faire cohabiter un marqueur et un anneau ensemble sur une même case.

    Avez-vous une autre solution? un idée ?

    Merci de votre aide
    • Partager sur Facebook
    • Partager sur Twitter
      9 novembre 2011 à 16:14:24

      Contruire ton tableau de la manière suivante n'est pas possible ?

      plateau => le plateau

      V = Vacant

      INV = Invalide

      OCP = Occupé

      XY = coordonnées (X=lettre Y = chiffre.) Une coordonnées (combinaison XY DOIT ETRE UNIQUE DANS TOUT LE TABLEAU plateau

      Dans le cas de V et INV il ne peut y avoir de dimension supplémentaire inférieur au XY

      Dans le cas de OCP il DOIT y avoir au MINIMUM une XY et au MAXIMUM deux pour chaque coordonnée (si j'ai bien compris c'est 2 MAXI puis la plus grande combinaison de pièce sur une même case toutes couleur confondu c'est 2 ???)

      Donc le tableau resemble a ça =>
      [plateau]
          [V]
              [XY]
          [INV]
              [XY]
          [OCP]
              [XY]
                  [BR]
              [XY]
                  [WR]
                  [BM]

      • Partager sur Facebook
      • Partager sur Twitter
      Never Trust User Input This is the truth
        9 novembre 2011 à 17:51:54

        c'est vrai que c'est pas mal mais si je fais je veux que anneau 1 soit déplacé dans une autre case sa deviens compliqué.

        Je pense que je vais supprimer les cases vides:

        Plateau
        • Case Impossible
          • A1
          • A6
          • ...
        • Les Anneaux
          • Anneau1
          • Anneau2
          • ...
        • Les Marqueurs
          • Marqueur1
          • Marqueur2
          • ...


        et je stocke les coordonées (ex:B4) dans chaque objet. ici la difficulté, c'est que quand je déplacerai un anneau, il faut que je vérifie si il n'y a pas un anneau qui aurai deja ces coordonnées

        Vous en pensé quoi ???

        (De tout façon vu les possibilité des de Javascript limité en POO je pense qu'il n'y a pas de structure qui aurait tout les avantages)

        Edit :

        Apparemment j'ai joué au jeu, et ceux qui ont définit le projet se sont trompé, on ne peux pas avoir un marqueur et un anneau sur la même intersection

        Je fais comme cela:
        • Case Impossible
          • A1
          • A6
          • ...
        • Les Anneaux
          • Anneau1
          • Anneau2
          • ...
        • Les Marqueurs
          • Marqueur1
          • Marqueur2
          • ...


        ou comme cela colonne/ligne
        • colonne 1
          • ligne 1 INS
          • ligne 2 INS
          • ligne 3 objet anneau
        • colonne 2
          • ligne 1 INS
          • ligne 2 objet marqueur
          • ...
        • ...


        La première méthode à l'avantage que je trouve facilement d'un anneau, je vais dans anneau et je cherche le bon (mais est-ce-que j'aurai besoin de chercher un anneau ??? en effet si j'utilise le drag and drop, je pourrais dnas les fonctions utilisé un this référence à anneau ???)

        L'avantage du deuxième, c'est si je veux verifié qu'il y a quelque chose de la case, il suffit de regarder dedans (çà je suis sur que j'en ai besoin) :D

        Le désavantage du deuxième, c'est que à chaque coup, je dois balader mon objet à la bonne case, alors que l'autre il bouge pas

        Des avis ???
        • Partager sur Facebook
        • Partager sur Twitter
          10 novembre 2011 à 11:23:51

          J'ai une question qui peut parraitre stupide mais je n'ai pas lu tes autres topic sur le sujet.

          Pourquoi ne pas utiliser des object php (plus de puissance et de facilité de traitement ?

          Avec une couche AJAX entre ton JS et PHP tu peux facilement
          (sans jamais faire changer de page l'utilisateur) faire passer les info a php traiter les objets et recharger les info traitées en JS dans la page courante.
          page HTML => 
              (JS SELECTEUR).value =>
                  ajax call (envoie donnée sur php ) =>
                      fichier.php traitement object =>
                  retour ajax(donnees_traitees) =>
              (JS SELECTEUR).value= donnees_traitees =>
          page html avec les nouvelles info
          • Partager sur Facebook
          • Partager sur Twitter
          Never Trust User Input This is the truth
            10 novembre 2011 à 11:58:24

            c'est ce que je voulais faire à la base.

            en faite les problème se pose :
            • on utilise des sockets car il faut pouvoir faire un appel serveur-client
              (donc faire socket-soket puis socket-socket (entre le serveur et les pages puis entre la page et le JS) ce qui est un peu loud et contre prodiuctif)
            • Si j'utilise PHP, il faudra une couche php, hors les serveur de jeu ne servent pas à ça: contrainte de projet, il faudrait alors que j'utilse un hébergement intermédiaire
            • Il faut consommé le moins de ressources sur le serveur


            Le serveur est une sheevaplug, donc limité en ressource

            Voilà (on change un peu le sujet) qu'est ce que vous verrais à ma place ???
            -je dois faire un jeu dynamique de type board
            -ce jeu doit être en ligne pour y jouer a deux
            -la communication se fait par des sockets

            Quelle serait le meilleur alors ???

            JS-socket-Serveur ?

            JS-socket-serveur (pour tout la communication multijoueur)
            |-Ajax-PHP(pour tout les calcul de coup)

            Ou je propose mais je sais que c'est pas fesable:
            JS-Ajax-PHP (il faudrait faire une requête au serveur tout les x secondes pour savoir si il y a un jeu mis à jour ...)

            A votre avis, il serait plus judicieux, rapide de quel manière ???
            • Partager sur Facebook
            • Partager sur Twitter
              10 novembre 2011 à 12:23:15

              pour la rapidité les sockets.

              si les échanges client/serveur ne descendent pas sous la barre de 1 seconde (limite basse des requêtes http) alors ajax est une option.

              pour une utilisation tres basses des ressources certainement pas PHP. Mais il existe bien d'autre langage serveur performant (et sans compilateur a lancer a chaque appel (ce qui rend lourd le php))

              Toujours dans la limite d'échange http (1 seconde minimum entre deux appel), il est possible d'utiliser un système de webservice.

              Par contre il y a clairement un certain nombre de contraintes (et ne les connaissant probablement pas toutes je ne peux prendre de position quand au système a utiliser de préférence.

              Ceci dis j'ai désormais la réponse a la question de mon dernier post :D


              Repartons donc sur le problème originel du post

              Citation


              c'est vrai que c'est pas mal mais si je fais je veux que anneau 1 soit déplacé dans une autre case sa deviens compliqué.



              [plateau]
                  [V]
                      [XY]
                  [INV]
                      [XY]
                  [OCP]
                      [XY]
                          [ID_unique_D_un_ANNEAU1]
                      [XY]
                          [ID_unique_D_une_MARQUE1]


              En partant du principe que chaque anneau/marque a un id html UNIQUE (principe de l'id html en fait)

              Il suffit de le chercher dans le tableau.
              De chercher la case (unique aussi) de destination

              Si j'ai bien compris il ne peut y avoir deux piece sur une même case du coup !!!
              // Utilisateur tente un déplacement :
              
              Si on ne trouve pas la case (XY) de destination dans le tableau [V] 
                 alors c'est un déplacement qui n'est pas autorisé
              Si on trouve la case (XY) dans [V] => 
                 on supprime son identifiant(XY) dans [V]
                 on l'ajoute(XY) dans [OCP]
                 on supprime l'uniqueID de l'anneau dans sa case(XY) actuelle
                 on l'ajoute dans la case (XY) que l'on viens de passer dans [OCP]
                 on supprime la case (XY) que l'on viens de vider dans [OCP]
                 on ajoute la case (XY) que l'on viens de vider dans [V]
              
              // Fin de déplacement utilisateur


              C'est une fonction assez simple et qui marche aussi bien pour les anneau que pour les marques...
              • Partager sur Facebook
              • Partager sur Twitter
              Never Trust User Input This is the truth

              Conception JS

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown