Programme de saisie d'un rubik's cube

Soyez le premier à donner votre avis sur cette source.

Vue 6 600 fois - Téléchargée 2 252 fois

Description

Ce programme est un démonstrateur permettant d'expérimenter un nouveau procédé de saisie à la souris d'un Rubik's Cube en remplacement de la fonction actuelle contenue dans mon programme RubixCube ( http://www.cppfrance.com/codes/RUBIX-CUBE_51633.aspx ). Il utilise aussi Visual cpp 6 de Microsoft et MFC et des modules de cette application.

L'originalité de ce démonstrateur est l'utilisation d'un menu contextuel pour proposer les couleurs possibles pour la facette que l'on souhaite renseigner. La difficulté est de déterminer ces couleurs compte tenu des facettes déjà renseignées.

Cette fonction est assurée par la classe « CCompletion ». Elle traite les 54 facettes suivant leur type : 6 facettes centre de face, 24 facettes arêtes et 24 facettes sommets. Ces deux derniers types sont pris en compte par la classe « CCompletion::CSlv ». Chacune de ces 24 facettes utilisent 4 fois les six couleurs.

Dans un premier temps, lorsque peu de facettes sont renseignées, la classe « CCompletion::CSlv », utilise la fonction prédictive « t_COLORS getFreeColors(BYTE side) const » pour déterminer les couleurs possibles puis, lorsque les facettes sont suffisamment remplies, la fonction « int Computs() » calcule toutes les solutions légales pour fournir un choix affiné grâce à « t_COLORS getComputedColors(BYTE side, BYTE flags) const ». Cette dernière lie les choix des facettes arêtes avec ceux des facettes sommets grâce à la parité des permutations (la parité des permutations des arêtes doit correspondre à la parité des sommets).

Je n'ai pas trouvé l'algorithme absolu permettant de trouver prédictivement les couleurs à utiliser pour les arêtes au début de la mise à jour. Donc avec la version actuelle, il est parfois possible de rencontrer des configurations qui mènent à l'impasse, mais dans la plupart des cas il s'agit seulement d'une erreur de saisie des facettes précédentes. Dans tous les cas, il ne reste que la solution de revenir en arrière pour corriger la couleur erronée avec les commandes Undo/Redo.

Quand il ne reste plus qu'une couleur possible pour une facette, le programme se charge de la remplir automatiquement. Ceci impose la contrainte, lorsqu'on souhaite faire des corrections, d'effacer d'abords toutes les couleurs non désirées avant de commencer d'introduire les nouvelles car l'automatisme est débrayé dès le premier effacement et remis en service par la première couleur introduite.

Ce programme permet de recopier des Cubes réels que, par exemple, on souhaite résoudre, mais il peut aussi servir à créer des configurations particulières dont la disposition des couleurs est remarquable. Ces configurations seront toujours solubles par le programme RubixCube. La communication entre ces deux programme se fait par le Presse Papier. Il est aussi possible de créer des configurations insolubles en levant les tests de rotation et de permutation comme dans le cas d'un Cube qui a été démonté (avec un tournevis...) puis remonté au hasard.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.