C'est avec plaisir que je vous présente un projet personnel que j'ai développé durant ces derniers mois : TarotSqores. J'étais au chômage et pour ne pas trop perdre la main avec le clavier, je me suis lancé dans un petit logiciel qui permet de compter les points au tarot lors d'une partie entre potes. Les règles sont tellement complexes que en fin de soirée, ça devenait difficile de continuer à calculer les points sur une feuille de papier.
Les cas particuliers entraînant systématiquement des variantes en fonction de la provenance des joueurs.
TarotSqores est un logiciel libre sous licence GPLv3+ écrit en python avec la bibliothèque graphique Qt.
Il y a un an, j'ai développé une pré-version de ce logiciel, en ligne de commande, pour apprendre le langage python. Il s'est révélé qu'une petite interface graphique pour y ajouter certaines fonctionnalités supplémentaires ne serait pas mal. Après avoir perdu mon boulot et en chercher un pendant quelques mois, il fallait absolument que je fasse un truc.
Pourquoi python ? C'est un langage que j'apprécie et dans lequel je voulais progresser. Je suis complètement autodidacte dans ce langage et j'espère que le code ne fera pas bondir les puristes !
Pourquoi Qt ? Connaissant déjà un petit peu GTK, je me suis lancé à la découverte de Qt. La doc est excellente, les exemples nombreux sur le web et des outils comme qt-desiner sont pratiques pour éviter de se prendre la tête au positionnement des widgets (entre autres !).
Pourquoi GPL ? Ça fait seulement 3,4 semaines que je suis certain que le code est à peut près stable et que je vais pouvoir garder une certaine cohérence au niveau des versions et des données enregistrées. Je pense que ce petit programme sans prétention servira à certains d'entre vous et c'est pourquoi j'ai choisi de libérer le code. (pourquoi GPL ? Parce que ! et pour le copyleft)
Une première version (0.1) était jouable, mais toutes les règles (en particulier les primes) n'étaient pas encore intégrées.
La version 0.2 intégrait presque toutes les fonctionnalités existantes.
La version actuelle (0.3) utilise un ORM pour mapper les objets avec une base de données relationnelle et rendre la manipulation des données plus simple.
Fonctionnalités :
- Règles TarotSqores permet de compter les points d'une partie à 3, 4 ou 5 joueurs.
- Petit sec,
- Petit au bout (gagné ou perdu),
- Le grand chelem (gagné, perdu, annoncé ou pas)
- Les poignées
- Les misères (d'atout ou de têtes)
- Appel du roi lors d'une partie à 5
- Graphiques Pendant une partie, il est possible de grapher la progression de chaque joueur.
- Persistance Il est vite apparu l'envie de vouloir enregistrer une partie.
- Stats La partie intéressante :) Étant donné qu'on possède toutes les infos, pourquoi s'en priver ! Il est possible de voir et d'étudier la manière de jouer de chacun : la fenêtre "Historique" permet de voir les informations pour des joueurs et pour des parties. Entre autres, il est possible de savoir combien de fois Bob à choisi quel contrat, avec combien de bouts, s'il a plus tendance à gagner ou à perdre, etc. Il reste certainement des données qu'il serait intéressant de générer...
- La télécommande Suite à une demande d'un ami, j'ai rajouté rapidement la possibilité de brancher une télécommande (BD Remote Control, la télécommande de la PS3) afin de pouvoir rentrer les informations sans être scotché à l'ordinateur toute la soirée. C'est un peu fait à l'arrache mais ça à l'air de fonctionner.
- Aides Les règles principales (ou ambiguës) du tarot sont également présentes ainsi qu'une explication du fonctionnement l'historique.
Il prend en compte, il me semble, toutes les règles officielles du tarot :
Une variante à également été intégrée : "Jouer la misère" qui permet, lors d'une partie sans preneur, de jouer la partie dans le but de gagner le moins de points possible. Ça permet, dans certains cas, de forcer des joueurs avec un jeu moyen de prendre un petit peu de risques et de ne pas attendre la main parfaite.
Ça permet d'avoir une vue globale sur le déroulement de la partie et de mieux voir les écarts entre chacun.
Dans un premier temps, les parties et joueurs étaient sauvegardés avec le module python cPyckle qui permet de dumper un objet dans un fichier. Le problème est que lorsque l'on veut modifier la structure de l'objet, il n'est plus possible de le loader et de le manipuler.
Il a donc fallu passer par une base de données (à partir de la v0.3). J'ai choisi de passer par un ORM (Elixir/sqlalchemy) et d'utiliser sqlite3 comme SGBDR.
Cette étape à permis d'alléger et de simplifier le code par endroit et surtout de rendre la manipulation des données plus simple et plus cohérente.
Il est donc possible de sauvegarder/charger une partie ou de l'exporter au format texte. Au niveau de l'export, on peut exporter/importer une partie et un joueur. Concrètement, ça permet de partager des parties entre les joueurs présents.
Claire va chez Alice et Bob. Elle amène son fichier qui représente son joueur (un id, un nom et une couleur, rien de plus). Après import de son joueur chez Bob et Alice, elle pourra jouer une partie et retourner chez elle après export de cette dernière. Ça lui permettra d'importer ensuite cette partie chez elle pour que la partie soit intégrée à ses stats.
Voilà, j'attends vos éventuels retours et n'hésitez pas à remonter les bugs ! Il en reste évidemment encore quelques uns...
Si vous avez des idées d'évolution, je suis également preneur. J'ai développé TarotSqores en fonction des règles que j'avais l'habitude d'utiliser mais il y en a certainement d'autres qu'il serait possible d'intégrer.
Il n'a pas encore énormément tester, donc pas taper trop fort si il reste des bugs...
C'est un petit projet sans prétention qui, j'espère, sera utile à certains d'entre vous !
C'était un peu plus long que prévu, surtout que ça aurait pu se résumer en 3 lignes :
Le projet est hébergé sur sf :
https://sourceforge.net/projects/tarotsqores/
Les sources sont consultables :
http://tarotsqores.git.sourceforge.net/git/gitweb.cgi?p=taro(...)
Cloner le dépôt git :
git clone git://tarotsqores.git.sourceforge.net/gitroot/tarotsqores/tarotsqores
# Ah cool du Tarot :)
Posté par Goffi (site web personnel, Mastodon) . Évalué à 4.
Quelques remarques/questions:
- une capture d'écran ça aurait était sympa
- ça ne permet que de compter les points, ou aussi de jouer ? Parce que je ne suis pas certain avec la description. Et comment on les entre les points ? (oui je sais, je peux installer et tester, mais je suis déjà plus que pris ce soir)
- perso ça me gonflerait que quelqu'un sorte un ordi pendant une partie entre potes (déjà que j'engueule mes potes quand ils passent leur soirée sur le tél), mais ça pourrait être intéressant si on peut jouer (si jamais on n'a pas de vrai jeu sous la main).
- le cas échéant, si tu veux des cartes de Tarot pour implémenter le jeu, j'ai fait un petit script pour récupérer celles dispos sur wikicommon dans la résolution de ton choix, dans l'archive http://www.goffi.org/index.php?download/35, il est dans frontends/wix/images et se nomme "split_card.sh".
Bon courage
[^] # Re: Ah cool du Tarot :)
Posté par Goffi (site web personnel, Mastodon) . Évalué à -1.
Bon y'en a sûrement d'autres, mais ces deux là piquent les yeux...
Plus qu'à mettre un ticket pour qu'on puisse modifier les commentaires dans les secondes qui suivent l'envoi sur le DLFP RoR...
[^] # Re: Ah cool du Tarot :)
Posté par FReEDoM (site web personnel) . Évalué à 2.
Plus qu'à mettre un ticket pour qu'on puisse modifier les commentaires dans les secondes qui suivent l'envoi sur le DLFP RoR...
pas mieux ! très bonne idée !
[^] # Re: Ah cool du Tarot :)
Posté par Axioplase ıɥs∀ (site web personnel) . Évalué à 3.
Ouch, tu peux le dire…
[^] # Re: Ah cool du Tarot :)
Posté par Goffi (site web personnel, Mastodon) . Évalué à 3.
bon «ça me gonflerait», et c'est mon dernier mot :)
[^] # Re: Ah cool du Tarot :)
Posté par Grunt . Évalué à 2.
D'où la possibilité d'avoir une télécommande (relis bien).
Sinon un "portage" sur Android ou sur calculatrice serait sympa, pour éviter le côté "laptop de 17 pouces posé sur la table".
Je dis ça parce que j'avais commencé un "compteur de points au tarot" sur TI-83 dans mes années étudiantes :P
THIS IS JUST A PLACEHOLDER. YOU SHOULD NEVER SEE THIS STRING.
[^] # Re: Ah cool du Tarot :)
Posté par imr . Évalué à 3.
[^] # Re: Ah cool du Tarot :)
Posté par Grunt . Évalué à 4.
Et puis y'a de quoi se méfier de quelqu'un qui joue au tarot en ayant à sa disposition une machine dotée d'une très très bonne mémoire et qui enregistre toutes les cartes tombées.
THIS IS JUST A PLACEHOLDER. YOU SHOULD NEVER SEE THIS STRING.
[^] # Re: Ah cool du Tarot :)
Posté par joubu . Évalué à 2.
Il n'y a donc pas une personne qui se charge de la saisie, mais uniquement 1 joueur qui rentre pendant 10 sec les infos.
Pour le jeu de Tarot, c'est un projet que j'ai sous le coude, mais qui n'est pas du tout prêt...
merci pour ton retour :)
# Fin de soirée...
Posté par ymorin . Évalué à 4.
Ca a l'air sympa, les soirées chez toi ! :-)
[^] # Re: Fin de soirée...
Posté par Zarmakuizz (site web personnel) . Évalué à 1.
Commentaire sous licence LPRAB - http://sam.zoy.org/lprab/
[^] # Re: Fin desoirée...
Posté par daimrod . Évalué à -1.
[^] # Re: Fin de soirée...
Posté par Tonton Th (Mastodon) . Évalué à 1.
# Quelques remarques en vrac
Posté par FReEDoM (site web personnel) . Évalué à 4.
2) Pourquoi un "q" à score ? Si il y a une raison même pas humoristique indique le quelque part.
3) La description en anglais sur la page sourceforge est à revoir.
Une proposition sans garantie:
"TarotSqore helps you track the scores during a Tarot game (a french card game). It allows to record the score of your last play so you can restart it later and even produce graphical statistics of each player."
5) y'a pas de 4
6) Il est conseillé en python d'avoir un shebang pour la portabilité plutôt comme ça :
#!/usr/bin/env python
7) que vient faire la gestion d'un manette PS3 dans les sources ? Le tarot de mon temps c'était moins folichon :)
8) Tu devrais "releaser" un tarball des sources au moins dans la partie "file" de sourceforge pour éviter à ceux qui ne veulent pas s'installer git/svn/mercurial etc...
9) Ce ne sont que des remarques. Il n'y a que ce qui font, qui font des erreurs. Bonne continuation !
10) dodo !
[^] # Re: Quelques remarques en vrac
Posté par joubu . Évalué à 2.
2) Le "q" est là pour le Qt... Sur le coup j'avais pas trouvé de nom et "TarotScores" était déjà pris.
3) Arf, la description, je l'ai complètement oubliée !
5) pas de 4 non plus
6) exact, faut que je le fasse
7) Pas une manette, mais une télécommande. ça permet de ne pas avoir, comme soulevé dans les autres commentaires, une personne scotché à l'écran de l'ordinateur toute la soirée. Là, la machine peut être à distance et pouvoir rentrer les infos quend même.
8) Oui, c'est prévu, mais j'ai eu la flemme hier soir :-/
9) Super remarques, merci !
10) boulot ...
# Pourquoi la GPL?
Posté par Maclag . Évalué à -2.
Donc, la bonne réponse c'était "la GPL, parce que je suis un fervent partisan du libre". Ah là lààààà
Autre avantage pour ton cas:
L'employeur potentiel peut aller tester le programme et même évaluer la qualité du code source.
Et ça, ça n'a pas de prix
Bon, en pratique il ne va pas regarder le code source, dans le meilleur des cas il va se dire que ça doit être bien parce que t'as pas peur de le montrer, de toute façon le recruteur, en voyant "Python", pense que t'as codé avec un serpent sur les genoux.
-----------> [ ]
[^] # Re: Pourquoi la GPL?
Posté par joubu . Évalué à 1.
Mon "Parce que !" laissait supposer que c'était comme ça et que j'avais mes raisons. Mais effectivement ta réponse est également adéquate.
Et le projet a bien évidemment été montré lors de mes entretiens d'embauche.
# Portage maemo
Posté par drgreen . Évalué à 4.
Vu que c'est développé en python + Qt, je me dis que ça doit être facilement portable sur maemo, et là, ça m'intéresse de pouvoir le tester sur mon n900.
C'est plus cool de mettre les points sur son téléphone que de laisser un pc allumé toute la soirée.
Merci
# Bug
Posté par joubu . Évalué à 1.
TypeError: type 'list' is not supported as a slot argument type
Il faudrait remplacer tous les types python des slots par PyQt_PyObject.
J'essaye de faire ça ce soir :-/
[^] # Re: Bug
Posté par joubu . Évalué à 1.
# Règles selon la Fédération française de tarot
Posté par goom . Évalué à 2.
- les misères n'existent pas
- le petit sec entraîne l'annulation de la donne
http://www.fftarot.fr/
[^] # Re:Règles selon la Fédération françaisede tarot
Posté par moules . Évalué à 2.
C'est aussi ce que Balkany dit http://www.youtube.com/watch?v=dmLw1aH8xco
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.