Pokerni — jetons sans valeur, adversaires IA étiquetés. Comme la maison fournit les adversaires, nous vous devons une transparence totale sur la donne.
Avant chaque main, le serveur tire une graine de 63 bits avec le générateur
cryptographique du système (secrets.randbits(63) en Python — imprévisible,
y compris pour nous). Cette graine alimente une permutation déterministe des 52 cartes
(numpy.random.default_rng(graine).permutation(52)). Les deux premières
cartes de chaque joueur puis les 5 cartes du board sont servies dans l'ordre du paquet,
sans brûlage.
Le serveur ne peut pas changer les cartes en cours de main, et le prouve :
1. Avant la main, chaque message d'état contient un engagement :
commit = SHA-256("selfpoker:" + graine). L'empreinte fige le paquet complet
sans rien révéler.
2. Après la main, le message de fin (hand_end) révèle la
graine. Chacun peut alors vérifier que l'empreinte correspond et reconstituer le paquet
entier — y compris les cartes non distribuées.
import hashlib
import numpy as np
graine = 1234567890123456789 # champ "fairplay.seed" du hand_end
commit = "..." # champ "commit" des messages d'état
assert hashlib.sha256(f"selfpoker:{graine}".encode()).hexdigest() == commit
paquet = list(np.random.default_rng(graine).permutation(52))
# n joueurs : cartes 0..2n-1 = mains (2 par joueur), 2n..2n+4 = board
# rang = carte // 4 (0=2 … 12=as), couleur = carte % 4 (♣♦♥♠)
Chaque main jouée est archivée avec sa graine — l'historique complet est rejouable à l'identique.
Les IA reçoivent exactement la même information qu'un joueur humain à leur place : leurs deux cartes, le board et les mises. Par construction, le code ne leur passe jamais les cartes adverses ni les cartes à venir. Elles portent toutes le badge IA, avec leur niveau affiché.
Des questions ? Le code du serveur est inspectable sur la machine qui l'héberge — c'est un site privé, entre gens de confiance.
Musique d'ambiance : Jason Shaw — audionautix.com, licence Creative Commons BY 4.0 (« Big Swing Band », « Closer To Jazz », « Dirt Road Traveler », « Nice And Easy », « Acoustic Rock », « Feel Good Rock »).