29 mai 2012

Le morpion en 3D à nouveau jouable, et sur de nouvelles grilles

 

Il manque encore beaucoup de choses, en particulier la gestion d’un critère de victoire (grille pleine, ou premier joueur à atteindre un certain score), l’affichage du score (pour l’instant, c’est un simple message en console) quelques menus pour lancer le jeu et configurer les options, ou encore la possibilité de relancer une partie sans quitter le jeu. Mais le « cœur » du jeu est fonctionnel : à tour de rôle, chacun des joueurs peut sélectionner une boule, et le programme se charge de calculer son score en regardant combien le joueur a aligné de boules de sa couleur.

Le calcul du score

Pour le score obtenu en fonction du nombre de boules alignées, j’ai finalement opté pour 3 points si on en aligne 4, 4 points pour 5, etc. Pourquoi ne pas simplement donner autant de points qu’il y a de boules dans la ligne ? Tout simplement pour rendre le score total plus cohérent de ce qu’on voit sur la grille, et trouver quelque chose de logique aussi bien pour les cas où on va aligner 5 boules d’un coup (on peut le faire par exemple si on a sur la même ligne 2 boules de sa couleur, un trou, et à nouveau 2 autres boules) que pour le cas où on complète avec une 5ème boule un alignement de 4.

Lorsque 4 sphères ou plus de la même couleur sont alignées, on trace dans chaque intervalle un trait de cette couleur pour les relier entre elles. Le score d’un joueur va ainsi correspondre au nombres de traits de sa couleur sur la grille.

 

Encore de nouvelles grilles

Je vous ai dit dans le précédent article qu’il est possible de définir la grille que l’on veut sur un maillage cubique. Après avoir passé un bon moment à gribouiller des schémas vaguement en perspective sur des bouts de papier, et à calculer des rotations bizarres, j’ai implémenté 2 nouveaux types de grilles, l’une se basant sur des prismes hexagonaux, l’autre sur des empilements de Kepler (ou un réseau cube face centrée pour les adeptes de cristallographie).

Passons aux captures d’écran1, ce sera plus parlant.

Les grilles basées sur un réseau cubiques sont sans doute les plus faciles à se représenter dans l’espace. Chaque boule peut avoir jusqu’à 6 voisines directes, auxquelles on peut rajouter 12 voisines en suivant la direction des diagonales des faces d’un cube, puis encore 8 voisines en prenant les diagonales du cube. Une boule peut donc appartenir à au plus 13 alignements différents.

C’est la grille qui offre le plus de possibilités d’alignements.

 
Un autre type de grille basée sur un réseau composé de maillages hexagonaux superposés, les différents étages étant alignés. J’ai ici choisi de laisser toutes les boules pour faire un gros prisme, mais comme pour les grilles cubiques il est possible de ne garder que certaines boules, ou d’en rajouter de plus éloignées. J’ai préféré faire « simple » dans un premier temps2

Dans ce type de maillage, une boule a jusqu’à 8 voisines directes (6 dans le plan horizontal, 1 au dessus et 1 au dessous). En prenant les diagonales des carrés verticaux, on peut rajouter 12 voisines. On obtient ainsi jusqu’à 10 alignements possibles passant par une boule. C’est donc moins que pour une grille à maille cubique, ce qui tendrait à rendre une partie plus simple (moins de directions à surveiller). Pourtant, pour avoir essayé de jouer un peu sur cette grille, elle m’a semblée beaucoup plus complexe. Nous devons vraiment être habitués à ne voir que des angles droits !

 
À éviter quand on a mal à la tête, une grille basée sur des empilements de Kepler. Dans ce type de grille, une boule a jusqu’à 12 voisines directes (6 dans le plan horizontal, 3 au dessus et 3 en dessous), auxquelles on peut rajouter 6 autres boules en prenant les diagonales des carrés qui se forment sur le maillage. Une boule peut donc appartenir à au plus 9 alignements différents, soit moins que pour les 2 autres types de grille.

La grille présentée dans la capture d’écran ci-contre n’est pas assez grande pour qu’on puisse aligner 4 boules en prenant des diagonales de carrés. Par ailleurs, certaines boules (celles des « coins ») ne peuvent être que dans un seul alignement, d’autres que dans 2 alignements (celles au centre des « arêtes »). Ce n’est donc pas une grille très intéressante, car mal équilibrée. En agrandissant la grille et en enlevant quelques boules au centre, il doit être possible de faire une grille plus sympathique avec ce type de maillage.

 

Pour finir, une dernière capture d’écran mettant en évidence les alignements en diagonale sur la grille type « Kepler » (avec 3 boules seulement) :

 

  1. À noter que ces images ne correspondent pas à une partie réelle, j’ai juste choisi quelques boules pour chaque joueur pour illustrer et montrer quelques alignements possibles. Il ne faut donc pas s’étonner si les joueurs semblent avoir joué de manière étrange ou stupide !
  2. C’est aussi parce que créer des grilles est assez fastidieux… Il faudra vraiment que je fasse un éditeur de grilles.
Réactions : 2 Commentaires
 

Commentaires

Vous pouvez poster un commentaire ou laisser un trackback à cette adresse.

 
 
  • Ekho
    29 mai 2012
     

    Je suis ultra-fan de tes grilles de fou-furieux !!!

    Par contre, je n’ai pas compris du tout ton raisonnement pour compter n-1 points quant on aligne n boules. Idem, comment comptes-tu une 5eme boule ajoutée à 4 boules alignées ? Je n’ai pas compris non plus… :-/

    Autre question qui me vient : est-ce que tu envisage de passer ton jeu sur mobile (Android surtout, iPhone on s’en fout) ?!? Il me semble qu’il y a toute sa place :

    - Il va se jouer quand on a 5 minutes à perdre (on va rarement prendre 1h pour jouer au morpion devant son écran de PC) ;

    - Le format mobile ajoute un peu de complexité, par rapport à un écran 22 pouces ;

    - Il existe très peu de jeux mobiles multijoueurs (je n’en ai trouvé que 2 sympas, dont un « Puissance 4″ tout bête).

    • Eldermê
      29 mai 2012
       

      Pour le score, c’est juste une histoire d’intervalles et de poteaux ;) Au lieu de compter les poteaux (les boules), on compte les intervalles (les traits entre les boules).

      Si tu complètes avec une boule un alignement de 3 pour avoir 4 boules alignées, tu gagnes 3 points.
      Si tu rajoutes encore une boule pour avoir 5 boules alignées, cela te rapporte un point supplémentaire, parce que tu vas rajouter un trait pour relier ta dernière boule aux autres boules. Les autres traits ayant déjà été dessinés avant, il ne te rapportent pas à nouveau des points.

      Si tu fais un alignement de 5 boules en bouchant un trou entre 3 boules d’un côté 1 de l’autre (ou 2 boules de chaque côté), cela te rapporte 4 points d’un coup.

      Est-ce plus clair ?

      Une version Android, c’est quelque chose que j’aimerais bien faire, oui. Mais je ne sais pas trop quand…

      Cela risque de demander pas mal de modifications dans le code pour le porter sous Android. Les plateformes mobiles n’ont pas OpenGL mais OpenGL ES (pour Embedded System) qui n’a pas tout à fait les mêmes fonctions. Après, il faut aussi voir si les autres bibliothèques que j’utilise sont portées sous Android. Enfin, il faut adapter les contrôles pour remplacer clavier/souris par un écran tactile. Bref, tout cela n’a rien d’immédiat, et il y aura probablement beaucoup de choses à revoir, sans compter que les contraintes de performance de l’application ne sont plus les mêmes que sur PC.

      Mon objectif pour l’instant c’est de finaliser une version qui marche pour GNU/Linux et Windows (le portage sous Windows devrait être quasiment immédiat, lui). Après j’ai aussi un autre projet de jeu un peu plus ambitieux que j’ai mis de côté pour l’instant, j’aimerais bien le reprendre une fois que Newt-Puzzle commencera à tourner. Difficile d’y retravailler en même temps qu’un portage de Newt-Puzzle sous Android.

      Bref, je ne sais pas trop.

 

Réagissez

Vous pouvez utiliser ces balises : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
 
 
 

© 2012 Eldermaeblog | Joyeusement propulsé par WordPress