Lorsque j’ai découvert le jeu de Dobble, je me suis tout de suite demandé comment on pouvait générer un tel ensemble de cartes.
Après y avoir vainement réfléchi, j’ai trouvé quelques références ici et là qui font appel à la géométrie projective.
L’idée m’est alors venue de générer un jeu personnalisé avec des images ayant un thème commun (des visages familiers, des lieux de vacances, etc.)
Le projet :
- Trouver une façon de générer les combinaisons de cartes et symboles
- Générer les combinaisons et les stocker dans fichier texte
- Faire un script qui génère les images de chacune des cartes avec ImageMagick
- Faire imprimer les images sur un support se rapprochant d’une carte à jouer
Les points 1 à 3 étant techniquement réglés, j’en partage ici les différentes étapes. Le dernier point est encore en projet…
1. Trouver l’algorithme
Après avoir parcouru liens mentionnés plus haut, il me restait à en faire l’implémentation. Après quelques tâtonnements, je suis tombé sur ce post de stackoverflow qui propose quelques implémentations.
2. Générer les cartes
J’en ai choisi une qui est sous-optimale (elle génère 58 symboles plutôt que 57). Le jeu reste cependant tout à fait valide et le bout de code implémentait aussi une fonction de vérification du jeu généré. J’ai légèrement modifié la sortie pour avoir un fichier texte facile à lire pour la suite.
Le fichier source est ici : mainDobble.cpp
Le résultat du programme est un fichier texte de la forme suivante où chaque ligne représente une carte composée de 8 symboles, eux-même représentés par un entier.
Fichier des cartes résultant : dobble.txt
On peut aussi générer des jeux avec 4, 6 ou même 12 symboles par carte. Par exemple:
3. Le script de rendu
Pour créer le rendu des cartes, un petit script bash: card.sh.
Syntaxe
Premier argument: le fichier texte en entrée. Second argument: le chemin du répertoire où sont les images. Les cartes sont générées dans un répertoire output
On notera la double utilisation de shuf. L’algorithme de génération des cartes est assez ordonné. Un double brassage s’impose. Le premier, c’est pour réarranger l’ordre des cartes (le shuf de la boucle for). Le second (encapsulé dans une fonction Shuffle pour ventiler les éléments d’une ligne plutôt que des lignes), est plus important. Il s’agit de ventiler la position des symboles sur les cartes. Sinon, les mêmes symboles ont tendance à se retrouver aux mêmes positions et ça enlève un peu du piment au jeu.
La boucle principale appelle ImageMagick pour créer un montage à partir d’images stockée dans le répertoire passé en argument et du fichier texte mentionné plus haut.
Ci-dessous, un exemple du rendu de quelques cartes générées. Il ne reste plus qu’à ajuster un peu les dimensions en fonction des proportions des cartes à imprimer. Mais pour ça, il faut trouver un fournisseur/site web, qui propose d’imprimer 57 cartes différentes pour un prix raisonnable. C’est la fameuse étape 4, qui est encore en suspend…






Bonjour,
Je suis interesse par ton fichier .txt qui donnes les combinaisons des 8 symboles a appliquer sur chacune des cartes. As tu aussi pu generer le meme fichier .txt pour un cas ou il n’y a que 5 symboles par carte, ou bien 6 ou bien 7. Si oui, je serais interesse pour le recuperer.
Merci
Olivier
Bonjour Olivier,
le lien vers le fichier est disponible sur l’article (dobble.txt). Pour le générer, il a un code en c++ (mainDobble.cpp) aussi disponible dans l’article. Il devrait être modifiable facilement pour passer à 5, 6 ou 7 symboles (en fait, c’est juste un paramètre de la fonction d’entrée).
Cordialement
Bonjour et bravo pour cette article passionant.
Juste un petit détail surle fichier txt. Tu à sauter le N°49, ce qui n’est pas bien grave, mais peut donner l’impression que tu as utilisé 58 symboles, puisque la numérotation commence à 0 et va jusqu’à 57 ;)
Bonjour Quirysse,
je suis enseignante de FLE (francais langue étrangere) et j’adore le Dobble (en famille et en classe, également). Les années précédentes, moi aussi, j’ai fabriqué pas mal de jeux de Dobble sur le site gorfo, mais depuis un certain temps, il ne marche plus. J’ai fouillé internet, mais hélas, je n’ai trouvé qu’un site oú on peut créer des jeux de Dobble avec des mots, sans images. Et hop, ensuite, je suis tombée sur ton site et chapeau! Félicitations pour ton travail et grand merci! Puisque je n’y connais pas á l’Informatique, je n’ai compris que le moindre des choses mais au moins, avec ton aide, je serai capable de créer des cartes avec 8 images pour mes lycéens.
Parcontre, j’anime des ateliers pour des maternelles, aussi et pour eux, 8 images, c’est trop (et quant aux mots, ils ne savent pas lire, donc, inutile..). J’ai lu ta réponse pour Olivier, mais je ne comprends pas, désolée, je serais incapable de faire ces modifications.
En tout cas, je serais donc tres reconnaissante si tu pouvais me suggérer un site, si tu en connais, oú je pourrais trouver une liste de nombres, similaire á la tienne, avec laquelle je pourrais fabriquer des jeux de Dobble 4 images par cartes.
Merci d’avance de ta réponse!
Bonne continuation,
Timea
Bonjour Timea,
Je ne connais pas de site pour trouver une liste des cartes de Dobble. En revanche j’ai généré des listes à 4, 6, 8 et 12 symboles qui sont donc disponible en téléchargement. J’ai mis à jour l’article, tu trouveras les liens plus haut.
Bonne rentrée !
Quirysse
Bonjour Quirysse,
Grand merci, encore, pour ta réponse et ton travail !! :)
Bonne journée,
Timea
Bonjour,
Merci de partager votre générateur de dobble. J’aimerais le personnaliser avec des images de formes géométriques pour une utilisation en classe mais je ne sais pas du tout comment m’y prendre et je n’ai aucune connaissance en programmation…!
Pourriez-vous m’aider ?
J’ai réuni toutes les images que je souhaiterais voir figurer sur les cartes dans un dossier mais après cela… je ne sais pas comment utiliser les fichiers que vous publiez sur votre site…
Le plus simple est d’utiliser le script à partir d’un ordinateur équipé d’une distribution linux. Sous Windows, il faudra au préalable installer au minimum bash. Sous Windows 10, il est possible d’utiliser WSL (Windows Subsystem for Linux). Le tout étant d’avoir un environnement permettant de lancer mon script en ligne de commande. Je crois que c’est assez trivial pour la plupart des informaticiens avec lesquels je pense partager ces petits bouts de scripts. En revanche, le jeu de Dobble semble avoir particulièrement touché le corps enseignant qui n’est pas forcément à l’aise avec ce genre de manipulation. Je ne sais pas comment je peux améliorer le système pour ce public… Peut-être que si je prenais le temps, je pourrais créer un générateur de jeu de Dobble en ligne. Ou bien créer un tutoriel adressé au néophyte pour lui permettre de lancer les scripts (dans le droite ligne d' »apprendre à pêcher plutôt que de donner du poisson » comme disait le sage…) Quoi qu’il en soit, en l’état je ne peux que vous donner ces quelques pistes, peut-être qu’une connaissance férue d’informatique pourra vous dépanner à partir de ces quelques bribes d’information.