麻雀の打牌選択アルゴリズム(4)

麻雀の打牌選択アルゴリズム(3) - koba::blog麻雀の副露判断アルゴリズム(4) - koba::blog までである程度の手作りはできるようになったが、和了打点を意識した手作りができていない。例えば

ドラ __s9____
m1m2m3m7m8p1p2p3s1s3s4s8s8 m6

でテンパイした場合、

  • s1 : s2 s5 待ち(両面8枚)の平和 (30符1翻)
  • s4 : s2 待ち(嵌張4枚)の三色、ドラ1 (40符3翻)

となり、打 s4 が有利だが、現在のアルゴリズムは待ちの多さで評価するため s1 を打ってしまう。

続きを読む

電脳麻将のプログラム中の中国語一覧

電脳麻将プログラムでは変数名など識別子に中国語を使用している。私に限らず日本人はプログラム中の識別子に日本語を使うのを嫌う*1が、かといって麻雀用語の英語など知らないので中国語を採用した訳だ。

私のソースコードを読んでくれているのは中国人が多いようなのだが、それは彼らにとってコメントなし*2でもプログラムが読みやすいからではないかと思う。このままでは日本人プログラマに不公平(?)なので今回は識別子の中国語を説明する。

*1:日本語には同音異義語が多すぎるのが原因と思う

*2:私はコメントが嫌いなのでほとんど入れない

続きを読む

天鳳の牌譜形式を解析する(2)

天鳳の牌譜形式を解析する(1) - koba::blog の続き。前回は天鳳の牌譜形式のXML要素・属性の意味を説明したので、今回はそれを解析するプログラムについて。

「牌番号」「面子コード」は複数の要素で使われているが、これを 麻雀の手牌の文字列表現 - koba::blog の形式に変換する。

続きを読む

天鳳の牌譜形式を解析する(1)

天鳳の牌譜は http://tenhou.net/0/log/ から取得することができる。第五期 天鳳名人戦 最終節 最終戦 であれば以下のURLになる。

形式はXMLっぽいが、要素名自体がデータになっていたり入れ子構造がなかったりでXMLの特性を生かしているとは言いがたい。何よりぱっと見て対局内容を想像することができない。天鳳の牌譜で麻雀研究をしようとする場合、この複雑怪奇な牌譜形式が大きな障害になっていると思う*1。そこで天鳳の牌譜を電脳麻将牌譜形式に変換するプログラムをPerlで作ってみた。

*1:意図的に分かりにくくしているフシもあるが

続きを読む

電脳麻将 ver.0.8 公開

f:id:xlc:20161231113612p:plain:w240:right

電脳麻将 を ver.0.8 にバージョンアップしました。

牌譜エディタの公開を目標にしていましたが、まだ当分かかりそうなので、まずは「牌譜ビューア」として公開します。

具体的な修正は以下の通りです。

  • 牌譜ビューアを追加
  • 牌譜再生の際に手牌表示のON/OFF、ツモ切り表示のON/OFFを選べるようにした
  • 牌譜再生の際に視点を選べるようにした(牌譜ビューアのみの実装)
  • 牌譜再生の際に集計表をいつでも表示できるようにし、そこから局を選択できるようにした
  • ゲームの結果を10局分ブラウザに保存するようにした
  • ゲームの結果を牌譜としてダウンロードできるようにした
続きを読む

電脳麻将 ver.0.7 公開

f:id:xlc:20161220234215p:plain:w240:right

電脳麻将 を ver.0.7 にバージョンアップしました。

  • 音声出力の方法を修正
  • スマートフォンの「ホーム画面に追加」の際のアイコンを指定した
  • チー、ポンなどの発声にキャプションをつけるようにした
  • 画像ダウンロード中に "Loading" の文字を表示するようにした
  • 牌画入力ツールを追加
  • 画面右上にナビゲーションのリンクを追加
  • スマートフォンタブレット用のCSSを追加

今回の主な修正はスマートフォン対応です。

当初予定していた牌譜エディタは次回に持ち越します。

牌画入力ツール

麻雀の牌姿を入力する「牌画入力ツール」はネット上にいろいろある*1 *2が、どれも画面上で牌をクリックして作成する仕様なので大変面倒くさい。そこで簡単な記法を牌画に変換するツールを作ってみた。

このような記述ができます。

{s067z1 z1}(ツモ) {p2-13} {z66=6-6} {_z77_} {  }(ドラ){m1}

s0s6s7z1 z1(ツモ) p2-p1p3 z6z6=z6-z6 _z7z7_ (ドラ)m1

続きを読む