shinyaishida / mjai

Game server for Japanese Mahjong AI.
0 stars 0 forks source link

mjai-tsumogiri で手牌を表示できるようにする #13

Closed shinyaishida closed 3 years ago

shinyaishida commented 3 years ago

ターミナル上で自分の牌を表示する。

イメージ

???> m1 m2 m3 m4 m5 m6 m7 m8 m9 kt kt kt xw | xr

??? は何巡目かを表す数字、| の右がツモ牌。

shinyaishida commented 3 years ago

まずは何巡目かを表示できるようにする。

shinyaishida commented 3 years ago

TCPClientGame の 46 行目の action の中身を見てみる。

                  action = Action.from_json(action_json, self)
shinyaishida commented 3 years ago

https://qiita.com/shoma2da/items/b2c92c6556858a4722b3

shinyaishida commented 3 years ago

json のままの方がみやすい。<- で始まる行がアクション。

shinyaishida commented 3 years ago

mjai-tsumogiri の出力を調べる。

shinyaishida commented 3 years ago
<-  {"type":"hello","protocol":"mjsonp","protocol_version":3}
->  {"type":"join","name":"tsumogiri","room":"default"}
<-  {"type":"start_game","id":1,"names":["shanten","tsumogiri","shanten","shanten"]}
->  {"type":"none"}
<-  {"type":"start_kyoku","bakaze":"E","kyoku":1,"honba":0,"kyotaku":0,"oya":0,"dora_marker":"5p","tehais":[["?","?","?","?","?","?","?","?","?","?","?","?","?"],["4m","6m","6m","9m","2p","2p","4p","5p","3s","4s","7s","7s","8s"],["?","?","?","?","?","?","?","?","?","?","?","?","?"],["?","?","?","?","?","?","?","?","?","?","?","?","?"]]}
shinyaishida commented 3 years ago
  1. サーバーから hello をうけとる。
  2. サーバーに join を送って参加する。
  3. サーバーから start_game をうけとってゲームを開始する。id が自分の場所。0~3 (配列のインデックス)。names にプレーヤーの名前が入る。
  4. サーバーに none を返す。
  5. サーバーから start_kyoku をうけとると局が始まる。場風は bakaze、局は kyoku、本場は honba。手牌は tehais の配列に入っている。id を使えば自分の手牌がとりだせる。
shinyaishida commented 3 years ago

やること

shinyaishida commented 3 years ago

id は @my_id に格納される。

shinyaishida commented 3 years ago

配牌はこれで出力

                  if action_obj["type"] == "start_kyoku"
                    puts '==  ' + action_obj["tehais"][@my_id].join(", ")
                  end