Jeu: Taquin NxN

3/5 (9 avis)

Vue 11 592 fois - Téléchargée 3 005 fois

Description

Bonjour,

Voici un simple code personnel du jeu "Taquin" de diverses dimensions et pour Windows.

Les constantes suivantes:
- NLC: le nombre de lignes et de colonnes.
- DIM: la dimension en pixels d'un carreau (carré).
- SEP: la séparation en pixels entre les carreaux.
peuvent être adaptées.

Valeurs "raisonnables": 3 <= NLC <= 16, 32 <= DIM <= 64, 2 <= SEP <= 8

Pour l'explication du jeu lui-même, voir Wiki:Taquin.

Utilisation des boutons de la souris:
- MR (droite): commencer ou recommencer un nouveau jeu.
- ML (gauche): déplacer un ou plusieurs carreaux dans la direction de la case vide.

A chaque déplacement avec ML, on incrémente le nombre de clicks actifs nCA et le nombre de carreaux déplacés nCD.
Ces deux valeurs s'affichent dans le titre de la fenêtre.
Pour qu'un click soit "actif", il faut bien sur viser un carreau de la même ligne ou de la même colonne que la case vide.

Exemple (5x5):

  12   3  23  11   4                       12   3  23  11   4
   1  15   8   5  24     click sur [2]      1  15   8   5  24
  13  19  17  22   6     ============>     13  19  17  22   6    
   7   2  20  18                            7       2  20  18
  21  10   9  14  16                       21  10   9  14  16

Nombre de carreaux déplacés: nCD est incrémenté de 3
Nombre de clicks actifs:     nCA est incrémenté de 1
On a évidemment:             nCD >= nCA.


Perfectionnements souhaitables pour un "second" article:
- Améliorer l'interface et l'aspect graphique.
- Mieux restreindre la zone redessinée (code ligne 53): InvalidateRect().
- Revoir Merge() et éviter les solutions impossibles.
- Forcer la position de la case vide initiale là où on clique à droite MR.
- Ajouter la possibilité de revenir en arrière (UnDo).
- Détecter explicitement la fin du jeu.
- Afficher et mémoriser les "scores".
- Recherche de solutions optimales.
- etc ...
 
 
Le ZIP contient le seul fichier source Taquin.cpp, ainsi que 4 exécutables Taquin3x3.exe, Taquin4x4.exe, Taquin5x5.exe et Taquin6x6.exe, de 9 kilo-octets chacun.
 
 
Bonne lecture et bon amusement.
 
 
P.S. En ce qui concerne les solutions optimales, voir par exemple:
Recherche de solutions optimales au jeu de taquin
ou d'autres algorithmes A* (A-star).

Codes Sources

A voir également

Ajouter un commentaire Commentaires
William VOIROL Messages postés 261 Date d'inscription mardi 12 décembre 2006 Statut Membre Dernière intervention 10 juin 2019
13 nov. 2014 à 11:02
Bonjour,
Excusez-moi de vous avoir sollicité alors que la réponse était à portée de main:
la fonction _umul128() semble répondre à ma question.
A+
William VOIROL Messages postés 261 Date d'inscription mardi 12 décembre 2006 Statut Membre Dernière intervention 10 juin 2019
11 nov. 2014 à 07:54
Bonjour,

Ayant "aussi" des problèmes de "clics", je me permets de vous poser ici une question qui n'est surement pas à la bonne place:
Question assembler 64bits:
Si mes souvenirs sont bons, lorsqu'on faisait une multiplication en 8, 16 ou 32 bits, la partie "supérieure" du produit était aussi calculée dans un certain registre (AH, DX, EDX, ... je crois ...).
Aujourd'hui, avec les processeurs 64 bits, est ce que c'est encore le cas ?
Si oui, pouvez-vous me montrer comment on peut, à l'aide d'une routine assembler "in line", accéder au résultat du registre contenant les 64 bits "supérieurs" d'un produit ?

Merci d'avance pour votre réponse.
BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
20 sept. 2014 à 18:04
Me semble que j'avais du mettre ma 1ere réponse dans la zone "evaluation".
Je ne suis décidément pas bon en clic.
KX Messages postés 16722 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 septembre 2023 126
20 sept. 2014 à 16:55
Alors non ce n'est pas possible, on ne peut évaluer que le code source.
Mais si tu as aimé le message de BruNews tu devrais également aimer le fork qu'il a fait de ton code : Taquin (2)
William VOIROL Messages postés 261 Date d'inscription mardi 12 décembre 2006 Statut Membre Dernière intervention 10 juin 2019
20 sept. 2014 à 16:49
Bonjour
J'ai beaucoup apprécié le message (ou le commentaire) de BruNews du 19 sept 2014 à 15:27 ci-dessus ... d'où ma question (qui ne concerne pas les "étoiles" du code déposé).

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.