Jeu: Taquin NxN

Soyez le premier à donner votre avis sur cette source.

Vue 7 122 fois - Téléchargée 2 229 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

BruNews
Messages postés
21054
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
7 novembre 2014
13 -
Salut,
sympa ce taquin graphique.
Pour tout dire, j'avais deja vu "taquin" sur cppfrance mais je ne savais pas à quoi ça correspondait.
Commme deja dit sur une autre de tes sources, petite taille de l'exe parce que exe est statiquement lié à msvcr120.dll qui est runtime VS2013 de 840 Ko que peu de monde a sur son PC donc non distribuable sans setup.
J'ai refait en x64, sans CRT ni aucune dépendance (hors DLL SYSTEM) , exe = 4 Ko.
Si tu es d'accord, je peux mettre cette version en source en précisant l'origine. Je pense que ça pourrait t'intéresser.
Bonne continuation.
William VOIROL
Messages postés
264
Date d'inscription
mardi 12 décembre 2006
Statut
Membre
Dernière intervention
10 juin 2019
> BruNews
Messages postés
21054
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
7 novembre 2014
-
Bonjour
Bien entendu que vous pouvez utiliser ce code source, surtout si c'est pour montrer (et m'apprendre) comment générer des exécutables moins dépendants.
Merci pour votre message dont le "ton" m'a l'air d'évoluer positivement.
Bonne continuation.
P.S. Peut-on mettre des "étoiles" à un message ?
KX
Messages postés
16023
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 septembre 2019
88 > William VOIROL
Messages postés
264
Date d'inscription
mardi 12 décembre 2006
Statut
Membre
Dernière intervention
10 juin 2019
-
Peut-on mettre des "étoiles" à un message ?
On peut mettre des étoiles pour évaluer un code (ou ne pas en mettre), mais pas pour évaluer un commentaire sur le code. De même que dans les forums on peut évaluer une réponse, mais pas un commentaire sur la réponse.

Là je te mets 2/5, parce que ton code est pour le moins obscur.
Pour autant je ne mets un vote que pour te montrer que l'on peut, je ne suis pas vraiment le mieux placé pour évaluer correctement du code C++.
William VOIROL
Messages postés
264
Date d'inscription
mardi 12 décembre 2006
Statut
Membre
Dernière intervention
10 juin 2019
> KX
Messages postés
16023
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 septembre 2019
-
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é).
KX
Messages postés
16023
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 septembre 2019
88 > William VOIROL
Messages postés
264
Date d'inscription
mardi 12 décembre 2006
Statut
Membre
Dernière intervention
10 juin 2019
-
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)

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.