[PYTHON] Calcul du solde du Grand Tour of Poker Stars

Qu'est-ce que Pokerstars

Le site de poker sur lequel vous pouvez jouer en ligne est le plus grand du quartier. Il existe également de nombreux outils d'assistance associés.

Pourquoi?

Comme mentionné ci-dessus, il existe de nombreux outils de support et, en gros, vous pouvez laisser le calcul du solde à l'outil. Cependant, le Grand Tour auquel j'ai pu jouer l'autre jour ne semble pas avoir été calculé par Holdem Manager 3 (voir la photo ci-dessous). Je pense qu'il sera ajouté bientôt. Au fait, la situation actuelle est plate comme ça (je suis désolé, c'est difficile à comprendre car j'ai participé à un autre tournoi entre-temps). HM3tp.png

code

Cliquez ici pour github (https://github.com/na-sudo/pokerstarts_analyze)

git clone https://github.com/na-sudo/pokerstarts_analyze.git

Nécessite numpy. L'environnement de test est python 3.8.5.

Je ne sais pas git! Cliquez ici pour ceux qui le disent.

grand_tour.py


import os,glob,sys
import json
import numpy as np

user = 'username'
srcdir = [
    'path to hand history1',
    'path to hand history2'
]

def make_pathlist(list_):
    li = []
    for path in list_:
        li += glob.glob(os.path.join(path, '**', '*Varied.txt'), recursive=True)
    return sorted(li)

def getNearestValue(list, num):
    """
    https://qiita.com/icchi_h/items/fc0df3abb02b51f81657
Aperçu:Une fonction qui renvoie la valeur la plus proche d'une valeur de la liste
    @param list:Tableau de données
    @param num:Valeur cible
    @return La valeur la plus proche de la valeur cible
    """
    #Calculez la différence entre l'élément de liste et la valeur cible et obtenez l'index de la valeur minimale
    idx = np.abs(np.asarray(list) - num).argmin()
    return list[idx]

user_prize = user + ' wins $'
user_win = user + ' wins the tournament'
user_lose = user + ' finished the tournament'
pathlist = make_pathlist(srcdir)
game = [0]*6
debug = [0]*6
debug_diff = 0
cost = 0
prize = 0
buyin_list = [1, 2, 5, 12, 25, 60]
completed = 0

for path in pathlist:
    with open(path, 'r', encoding='utf-8')as f:
        txt = f.read().split('\n')
    buyin = 100
    for line in txt[2:6]:
        for word in line.split(' ')[::-1]:
            if '$' in word:
                buyin = min(buyin, float(word.replace('$','')))
                break
    buyin = getNearestValue(buyin_list, buyin/0.9)
    index = buyin_list.index(buyin)
    game[index] += 1
    cost += buyin
    for line in txt:
        if user_prize in line:
            prize += float(line.split(' ')[2].replace('$', ''))
        elif user_win in line:
            if buyin!=len(buyin_list):
                cost -= buyin_list[index+1]
            else:
                completed += 1
        elif user_lose in line:
            pass
        else:
            pass

    #print(game, cost, buyin)
#print(game, cost, prize, completed)
print('net prize :', round(prize - cost, 3))

Veuillez copier et utiliser

Comment utiliser

Ouvrez grand_tour.py avec un éditeur et entrez votre chemin dans user ou srcdir et exécutez. Puisqu'il recherche récursivement, il n'y a pas de problème si vous spécifiez le répertoire parent.

user = 'username'← Mon identifiant étoiles
srcdir = [
    'path to hand history1',← Emplacement défini dans l'application Pokerstars
    'path to hand history2'← Si vous utilisez HM3 etc., supprimez-le si vous n'utilisez pas ce chemin.
]

Il semble être ci-dessous sur la page officielle. C:\Users\YourUsername\AppData\Local\PokerStars\HandHistory\

Le résultat ressemble à ceci

& python grand_tour.py
net prize : 22.54

Je suis comme un plus «22,54 $»! Je perds habituellement à 5nlz, donc le Grand Tour peut être délicieux!

À propos, si vous commentez la ligne 68 (deuxième ligne à partir du bas), les détails sortiront.

& python grand_tour.py
[109, 36, 13, 3, 1, 0] 109 131.54 0
net prize : 22.54

[Étape du défi], coût, prix, terminé Est imprimé. le coût est le buy-in total, le prix est le prix total et terminé est le nombre de finitions. La scène que vous avez contestée a un buy-in de «[1 $, 2 $, 5 $, 12 $, 25 $, 60 ]». J'ai essayé 109 fois « 1», mais je ne l'ai pas encore essayé car «60 $» vaut 0. Je pense que même si vous essayez à partir de «5 $» ou quelque chose du genre, il calculera correctement.

finalement

C'est la première fois que j'utilise Qiita et github, donc je serais heureux si vous pouviez signaler diverses choses!

Référence (utilisée dans le code)

Récupérer une valeur la plus proche d'une valeur à partir d'un élément de liste Python (Qiita)

Recommended Posts

Calcul du solde du Grand Tour of Poker Stars
Le début de cif2cell
Le sens de soi
le zen de Python
L'histoire de sys.path.append ()
La vengeance des types: la vengeance des types
AtCoder Grand Contest 046: A --Takahashikun, dessin d'animation The Strider