2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

GTO Wizardの特定のプリフロップシチュエーションを素早く開きたい

Posted at

概要

  • GTO Wizardにおいて、特定のプリフロップスポットを開くまでのボタンクリック回数が多く、復習が困難であるためにLaunchヘルパーを作成した
  • 実装容易性を優先し、gemとしてglimmer-dsl-libuiを用いた

完成物

スクリーンショット 2022-03-09 12.58.37.png

課題

GTO Wizardにおいて復習をする際
「bb数は20bbを選択して... UTG fold... UTG+1 fold... LJ Raise... HJ fold... BU fold... のレンジは?」
という具合に、ボタン操作をするのが大変億劫であるため、復習機会を逃してしまう

アプローチ

https://app.gtowizard.com/solutions?gametype=MTTGeneral&depth=17.125&soltab=strategy_ev&history_spot=6&preflop_actions=F-R2-RAI-C-F-F

GTO WizardにおけるURLのクエリパラメータは以下のようになっている

depth = bb数 + .125 (.125は謎)
history_spot = UTGから数えたアクションの順番のindex
preflop_actions = F-R2-RAI-C-F-F というような、アクションの履歴

このクエリパラメータを作るツールが作れればよい

今回の場合

  • Raiseアクション (R2など)は、レイズサイズをツール側が把握していなければならず、マスタの作成が必要になる
  • 主に20bb以下のトーナメントポーカーにおけるPreflopの復習が目的であったため、知りたいシチュエーションがAll-in or Fold であることが多い

という2点から、「AnyポジションにおけるAll-in、またそれに対するAnyポジションからのCallが入っている状況での各ポジションの振る舞いを復習するための簡易的なツール」 として作成するのが作業に対するコスパが良いと判断しました。

以下のように、特に難しいことはやっておらず単純な分岐のみのツールとなります。

# preflop_actionsのクエリパラメータの作成
# F-F-RAI-C-Fみたいな文字列を作る
def action_text(data)
  action_text = ''
  data.each_with_index do |d, index|
    break if d.has_key?(:target)
    if index > 0
      action_text += '-' # アクションの連結文字
    end
    if d[:call]
      action_text += 'C' # Call
    elsif d[:allin]
      action_text += 'RAI' # Raise All In
#   elsif d[:raise] # Raiseを管理する場合、ポジションごとのRaise額をこのツール側が知っている必要があるので作業時間が必要
    else
      action_text += 'F' # Fold
    end
  end
  action_text
end

また、glimmer-dsl-libuiではtable形式のUIの中にcheckboxを表示するオプションもありましたが、Mac OSでは表示専用 (チェックしているかどうかの値を動的に変更して、データとして取得することは出来ない)という制約があるため、今回は ボタンの上にチェックマークを表示すること で代用しました。

positions = ['UTG', 'UTG+1', 'LJ', 'HJ', 'CO', 'BU', 'SB', 'BB']
actions = { 'All-in': 1, 'Call': 2 }
settings = positions.map { |position| [position, '', '', "#{position} Open"] }
check_mark = "✓"

window('GTOWizard Opener', 500, 500) {
  text_column('Position')
  table {
    actions.each do |k, v|
      button_column(k.to_s)  {
        on_clicked do |row|
          settings[row][v] = (settings[row][v] == '') ? check_mark : ''
        end
      }
    end
    cell_rows settings
  }
}

使用感

シチュエーション:
14bbがeffのときに
UTG+1からのオールインが入っており、そこにHJとCOがコールしている状態でのSBのアクションを確認したい

スクリーンショット 2022-03-09 14.21.43.png

スクリーンショット 2022-03-09 14.21.37.png

いい感じ :thumbsup:

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?