Application iOS
Interface SwiftUI avec les mécanismes de jeu PokerKit et la capture des décisions.
Étude de cas
Une table d’entraînement native à 6 joueurs et 100 BB, où cinq adversaires GTO jouent chaque main via la même Pokerai API disponible aux développeurs. Counterplay enregistre chaque décision du Héros, l’évalue par rapport aux fréquences renvoyées, regroupe les écarts récurrents en rapports de faiblesses et conserve les mains sous-jacentes prêtes à être revues ou à recevoir un coaching facultatif fondé sur le contexte réel des mains.


01 / architecture
Counterplay sépare la mécanique de jeu, l’état de session et la vérité stratégique. PokerKit fait avancer la table à six joueurs ; le service d’entraînement conserve la ligne d’action ordonnée, les tapis effectifs, les ranges et le contexte de revue ; Pokerai API fournit des consultations de solutions précalculées ou la sortie du solveur en temps réel. La même réponse peut guider le jeu des adversaires, l’évaluation du Héros, la visualisation des ranges et un coaching ultérieur sans intégrer de grilles de stratégie privées dans l’application.
Interface SwiftUI avec les mécanismes de jeu PokerKit et la capture des décisions.
FastAPI conserve la main en cours, la séquence d’actions, les ranges et le contexte de révision.
Stratégie préflop et flop pré-résolue, avec résolution du turn et de la river mise en file d’attente.
02 / boucle produit
Le produit ne se contente pas d’exposer une réponse du solveur. Il transforme les décisions individuelles en rapport d’analyse, puis conserve les mains sous-jacentes disponibles pour révision et étude de suivi.
Regroupez les décisions similaires, affichez les nombres d’échantillons et l’écart moyen, puis classez les schémas préflop et postflop répétés par gravité.

Recherchez par main, position ou cartes ; examinez le résultat et les BB nettes ; puis rouvrez la séquence de décisions exacte à l'origine d'un rapport.

Choisissez une consultation rapide précalculée ou une résolution exacte en direct, définissez le pot et les positions, puis intégrez le résultat à une discussion ciblée.

Gardez l’interface d’entraînement ciblée tout en permettant au joueur de choisir la langue, l’identité de la table et le modèle facultatif utilisé pour les explications.

03 / registre des points de terminaison
Issu du véritable client (méthode → point de terminaison → où il est utilisé) :
/v1/gto/preflopActions préflop du Vilain + évaluation de la décision préflop du Héros
/v1/gto/preflop/rangeLa grille de stratégie de ranges 13×13 affichée dans l’analyse
/v1/gto/flop/treeArbre de décision postflop pour la situation au flop
/v1/gto/flop/nodeStratégie au nœud actuel du flop (+ évaluation)
/v1/gto/flop/projected-rangeMettre à jour les ranges le long de la ligne d’action du flop
/v1/gto/rangeAssembler solver_results pour une ligne d’actions
/v1/gto/turn/projected-rangePassage de la range du flop au turn
/v1/gto/solverSoumettre une situation au turn/river pour une résolution en temps réel
/v1/gto/solver/treeArbre de décision de la situation turn/river résolue
/v1/gto/solver/nodeStratégie à un nœud du turn/de la river (+ évaluation)
04 / preuve de mise en œuvre
Le client n’intègre ni grilles de stratégie ni sortie du solveur. Il prépare la situation actuelle, envoie une requête authentifiée et renvoie des fréquences de stratégie normalisées à l’entraîneur.
class GtoClient:
def __init__(self, settings):
self._headers = {"Authorization": f"Bearer {settings.gto_api_key}"}
async def preflop(self, hole_cards, hero_pos, preflop_actions):
body = {"hole_cards": hole_cards,
"positions": {"hero": hero_pos},
"preflop_actions": preflop_actions}
return _strategy_from(await self._post("/v1/gto/preflop", body))
async def flop_node(self, node_token, hole_cards=None):
body = {"node": node_token}
if hole_cards: body["hole_cards"] = hole_cards
return _strategy_from(await self._post("/v1/gto/flop/node", body))
# … + solver_schedule / solver_tree / solver_node, all one-liners over _post()05 / boucle de décision
Envoyez les cartes, la position et les actions dans l’ordre ; utilisez les fréquences renvoyées pour jouer et évaluer.
Chargez l’arbre pré-résolu, résolvez le nœud actif et projetez les ranges après chaque action.
Transmettez les ranges au solveur en temps réel, vérifiez régulièrement la tâche, puis consultez le nœud de stratégie obtenu.
Mesurez l’action choisie selon sa propre fréquence GTO et transmettez un contexte structuré au coach facultatif.
Counterplay est une intégration de produit Pokerai API maintenue par Pokerai API. Elle n’est pas présentée comme un déploiement auprès d’un client tiers. Cet enregistrement technique documente le flux de travail de l’entraîneur iOS et les points de terminaison de l’API publique utilisés par ce flux. Le produit actuel cible l’entraînement en cash game à six joueurs avec 100 BB, attribue aléatoirement le siège du Héros, utilise cinq adversaires guidés par une stratégie et réduit les situations postflop à plusieurs joueurs à une approximation en heads-up. Le coaching est facultatif. Counterplay n’active pas d’assistance en temps réel aux tables en argent réel. Cette page ne fait aucune déclaration concernant l’adoption par les clients, les téléchargements, les performances de référence, les partenariats commerciaux ou les recommandations externes.
Développez sur la même API
Commencez avec une clé gratuite, effectuez une requête API préflop, puis suivez les mêmes points de terminaison publics utilisés ici.