Ce jeu fait partie de la saga des Graphes. Voir les liens dans le menu à droite pour plus de détails
Passez votre souris par dessus une image pour l'afficher.
BGraphe a rencontré un problème important dans sa version RC1 : le jeu crashait sous Internet Explorer, sur plateforme Vista. Après modification du code, il s'est avéré que le problème venait d'une trop grosse utilisation des filtres...bref, ré-optimisation globale du jeu.
La règle de B-Graphe est extrêmement simple : il faut et il suffit de supprimer toutes les intersections entre les lignes. Pour cela, il faut agir sur les noeuds (representés par un rond). Rien de bien compliqué...et pourtant !
Les arêtes en rouge sont les arêtes avec une intersection, il faut les corriger.
Ce jeu utilise un graphe non-orienté, et cherche à le representer sous forme planaire.
Le concept est extrêmement simple, mais la solution n'est pas toujours facile, loin de là !
D'un point de vue mathématique, deux algorithmes «connus» permettant de déterminer la planarité d'un graphe. L'un deux, relativement simple à comprendre, se limite à montrer que le graphe n'est une expansion ni de K5, ni de K3,3 (les deux graphes représentés ci-contre). Pour des explications plus mathématiques, je vous invite à consulter cette page.
Un mini algorithme tente d'attribuer à chaque niveau une complexité. Cette complexité est calculée de façon très empirique. Elle prend en compte le nombre de noeuds, mais aussi le nombre moyen d'arcs par sommet, et attribue un bonus aux niveaux ayant un fort ratio :
\(\frac{3}{2} * \frac{Nb_{Liens}}{Nb_{Noeuds}} + \frac{Nb_{Noeuds}}{35} + \frac{Nb_{Liens}}{30} + \frac{1}{5}*(\frac{Nb_{Liens}}{2.2} - Nb_{Noeuds})'\)
B-Graphe inclut un éditeur de niveaux.
Pour comprendre son fonctionnement, il faut d'abord comprendre le fonctionnement du moteur interne :
Chaque niveau est défini, non par des noeuds, mais par des liens, un lien englobant deux noeuds.
Le moteur interne détermine de lui même le nombre de noeuds (en trouvant le maximum dans les couples de noeuds). Une fois ce maximum trouvé, tous les noeuds sont générés, et le moteur parcourt le tableau des liens et les ajoute graphiquement.
Enfin, les noeuds sont placés de façon aléatoire (autour d'un cercle), et affichés à l'écran.
Pour l'éditeur, cela signifie qu'il suffit juste d'indiquer les couples, tout le reste étant géré de façon interne.
Un couple, comme dit plus haut, est défini par deux noeuds. On prend pour convention de séparer ces deux noeuds par une virgule «,». Les couples sont séparés par un « | » pipe (alt gr + 6 sur un clavier franco belge).
Dernière convention, la liste des noeuds commence à 0.
Un exemple concret pour mettre tout cela en pratique :
Pour réaliser le graphe ci contre, on utilisera donc ce code : 1,2|1,5|2,3|3,4|4,5|4,6.
Que remarque-t-on ? Même si aucun lien ne pointait vers 0, un noeud n°0 a quand même été crée, et n'est rattaché à aucun autre. Les plus assidus remarqueront qu'en chargant deux fois le niveau, ils obtiennent deux configurations différentes...normal, puisque l'ordre des noeuds est recalculé aléatoirement à chaque fois.
Voir le fichier SWF, et le code.
Les sauvegardes sont réalisées sur une base plus ou moins régulière, lorsque le code a été amélioré significativement depuis la sauvegarde précedente.
Player count : (non disponible)
Le code est réparti en classes claires et nettes.
L'ensemble du fichier représente moins de 10ko !
Afin d'éviter l'engorgement du serveur, le code a été décentralisé sur une page externe.
Pour les plus frustrés, la solution est disponible sur ce serveur...
Mais je n'allais pas non plus la marquer directement ! Regardez un peu le code source de cette page...ou sinon, trouvez l'URL ! Ce n'est pas bien dur, je vous rassure...
Ces solutions ne vous seront pas forcément utiles, puisque les noeuds n'ont pas de numéros...mais si cela vous fait plaisir !
Chargement du sommaire...