前回の記事の続きです。www.barbaroiware.net前回は<AGARI>タグ内のm属性が刻子および加槓を示している場合のデータにについて解説しました。今回は暗槓、および大明槓の場合のデータについて解説します。暗槓および大明槓これまでに説明してきたとおり、m属性の値はデータが格納されている16bitの2進数ビットフィールドを10進数に変換したものです。>というようなXML形式で天鳳のログファイルに記録されています。10進数の"42367"は2進数で表すと"1010010101111111"となり、これが副露した1メンツのデータを表しています。右から数えて3番目のbit(以下3ビット目)から5番目のbitまでがすべて0の場合、そのメンツは暗槓、もしくは大明槓であることが確定します。この場合、各bitの意味は以下の通りになります。槓子のパターンを示すまず1-2ビット目は他のメンツ同様誰から鳴いたかを示します。ビットフィールドとの対応は前々回の記事内の順子の場合を参照してください。ここが0x00の場合、自分から鳴いたという情報になりますので、槓子なら暗槓であることを示します。3-5ビット目が「0x000」であれば、このメンツが暗槓もしくは大明槓であることを示します。あるフラグがない」という情報をもって、このメンツは暗槓、もしくは大明槓であることが確定されます。6ビット目は三人麻雀(三麻)の場合に使用されるらしいですが、よくわかってないので省略。9-16ビット目は槓子のパターンを表します。槓子のパターンとはたとえば、「字牌の西の槓で1枚目の西をカンした暗槓、もしくは大明槓」といった情報のことです。刻子や加槓の場合と異なり、同種牌の中での組み合わせを考える必要はないことに注意してください。ビット情報との対応は以下の通りです。各9パターン、字牌で東~中の7パターンの組み合わせが考えられ、さらにどの牌を鳴いたかの情報が加わりますので、刻子のパターンとしては(3×9+7)×4=136とおりの組み合わせが考えられます。そんなとこで天鳳解析シリーズは以上です。自分で実際にやってみないとわかんないですね!カロリーメイトください。実践問題集】のバグ報告や改善要望はこちらのコメント欄、もしくは開発者Twitter↓へお願いします。ブログのほうが早く気がつく可能性が高いです。twitter.com個別問題に対する疑問は画面左上の問題番号を、不具合の場合はAndroidやiOSのバージョンおよびバグ発生時の操作など状況を添えていただけると有り難いです。Inc.)を使用しており、AdMobがご利用者の情報を自動取得する場合がございます。提供等につきましては、以下の広告配信事業者のアプリケーション・プライバシーポリシーのリンクよりご確認ください。gekirinsoftware☆gmail.com(☆→@、gを半角文字に置き換えてください)公開されても問題のない連絡であれば、この記事にコメントしていただくのが一番手軽だと思います。前回の記事の続きです。www.barbaroiware.net前回は<AGARI>タグ内のm属性の意味と、順子の場合のデータにについて解説しました。今回は刻子、および槓子の場合のデータについて解説します。前回、m属性の値はデータが格納されている16bitの2進数ビットフィールドを10進数に変換したものであるということを説明しました。10進数の"42367"は2進数で表すと"1010010101111111"となり、これが副露した1メンツのデータを表しています。右から数えて3番目のbit(以下3ビット目)が0かつ、4ビット目が1の場合、そのメンツは刻子であることが確定します。この場合、各bitの意味は以下の通りになります。刻子のパターンを示すまず1-2ビット目は順子同様誰から鳴いたかを示します。対応は順子の場合と同じですので省略します。3-4ビット目が「0x10」(4ビット目を先に読む)であれば、このメンツが刻子であることを示します。6-7ビット目は刻子に含まれない牌を特定する情報です。順子のところでも解説したとおり、天鳳では同じ種類の4枚の牌(同種牌)をそれぞれ別のものとして管理しています。この2ビットを使ってどの牌が使われていないかという情報を示しています。ややこしいので具体例を後ほど解説します。10-16ビット目は刻子のパターンを表します。刻子のパターンとはたとえば、「字牌の西西西の組み合わせで1番目(左側)の西をポンした順子」といった情報のことです。ビットフィールドとの対応は以下の通りです。各9パターン、字牌で東~中の7パターンの組み合わせが考えられ、さらにどの牌を鳴いたかの情報が加わりますので、刻子のパターンとしては(3×9+7)×3=102とおりの組み合わせが考えられます。6-7ビット目の情報が「0x10」で10-16ビット目の情報が「0x1100101」だったとします。6-7ビット目の情報「0x10」は「0x00」から数えて3番目のビットですので、「この刻子には3枚目の同種牌が使われていない」という情報になります。10-16ビット目の情報「0x1100101」は上の対応表を参考にすると「中の刻子(明刻)で3番目の中をポンしたもの」ということがわかります。これらの情報をあわせて考えると、この刻子は「1枚目の中、2枚目の中、4枚目の中で構成されている刻子で、3番目の『4枚目の中』をポンした明刻である」ということがわかります。刻子と重複する部分が多いので、加槓の場合を先に説明します。加槓の場合の各ビットの意味は以下のとおりです。刻子のパターンを示す刻子との違いは事実上、4-5ビット目のフラグのみです。3-5ビット目が「0x100」(5ビット目から読む)であれば、このメンツが加槓であることを示します。加槓であることを示すフラグは5ビット目の情報ですが、順子の場合5ビット目は別の情報(「順子の1枚目の牌を同種牌4枚の中から特定する」)に当てられていますので、5ビット目を見ただけでは加槓であると判定できないことに注意してください。6-7ビット目は加槓した牌を同種牌4枚の中から特定する情報ですが、加槓した牌というのはすなわち明刻に含まれていない牌ということになりますので、事実上明刻と同じ情報になります。1-2ビット目、10-16ビット目も明刻と同様に、加槓する前の刻子(明刻)についての情報を示しています。残りの暗槓、明槓のメンツについては次の記事に分けます。カロリーメイトください。前回の記事の続きです。www.barbaroiware.net前回はm属性以外の<AGARI>タグの中身(アガリ形のデータ)について解説しました。今回は副露したメンツをあらわすm属性について解説します。解析mm属性は以下のような形式で記述されています。<AGARI>タグはたとえば以下のようなXML属性の形式で保存されています。m="42367,50251"ひと目では何を表しているかまったくわかりませんので、ソースコードから読み解いていきます。https://tenhou.net/img/tehai.jsどうやら、これはデータが格納されている16bitの2進数ビットフィールドを10進数に変換したものということのようです。10進数の"42367"は2進数で表すと"1010010101111111"となり、これが副露した1メンツのデータを表しています。右から数えて3番目のbit(以下3ビット目)が1の場合、そのメンツは順子であることが確定します。この場合、各bitの意味は以下の通りになります。順子のパターンを示すまず1-2ビット目は誰から鳴いたかを示します。これは刻子や槓子などの他のメンツにおいても同様です。数字との対応は以下の通り。上家チーの場合は必ず上家から鳴くことになるので1-2ビット目は11になります。00の自分からの鳴きは暗槓のときに使います。3ビット目は上で説明したとおり、このメンツが順子であることを示します。説明の都合上、11-16ビット目を先に説明します。11-16ビット目は順子のパターンを表します。順子のパターンとはたとえば、「筒子の345の組み合わせで4をチーした順子」といった情報のことです。数字との対応は以下の通りです。各7パターンの組み合わせが考えられ、さらにどの牌を鳴いたかの情報が加わりますので、順子のパターンとしては3×7×3=63とおりの組み合わせが考えられます。順子の組み合わせが特定できたところで、4-9ビット目の牌を特定する情報に戻ります。順子の組み合わせを特定するだけなら、ここまでのデータで十分なのですが、天鳳では同じ種類の牌でもそれぞれ4枚存在する牌(同種牌)を区別して管理しています。「筒子の345」の3といっても、実際には4枚存在する3の牌のうちのどれを使っているかということはわかりません。その情報を特定するのが4-9ビット目の情報です。11-16ビット目の情報によって、順子のパターンが「筒子の345の組み合わせで4をチーしたもの」と特定できたとします。このとき、4-5ビット目が0x01、6-7ビット目が0x11、8-9ビット目が0x00なら、3は2枚目の3の牌、4は4枚目の4の牌、5は1枚目の5の牌を使っているということがわかります。この情報は特に赤牌アリのルールのときに重要な情報になってきます。赤牌アリのルールのときは五、5、Vの牌において、1枚目の牌(すなわち同種牌4枚の中から特定するビット列が0x00)が赤牌として定義されているからです。長くなってしまったので、刻子、槓子のメンツについては次の記事に分けます。カロリーメイトください。マインスイーパ」をリリースしました。これはunityroomで開催されている第14回1週間ゲームジャムに参加して、大して評判がよくなかったゲームをアプリ化したものです。unityroom.comひょっとするとアプリストアでは名前が変わっているかもしれません。Playで完全一致検索ですら出てこないから悪あがきをしているのです。いうかこの状態でどうやってダウンロードされろというのでしょうか。なんだか前途多難な気しかしませんが、よろしくお願いします。今回ははじめてローカライズをしてみました。-スクリーンショットスクリーンショットはおもしろそうだと思う。(いつもそう思ってるんだけど)カロリーメイトください。前回の記事で天鳳(オンライン麻雀ゲーム)のサイトから牌譜ログを取得する方法を解説しました。www.barbaroiware.net天鳳の牌譜ログにはさまざまなデータが含まれていますが、今回は特に<AGARI>タグの中身(アガリ形のデータ)について解析していこうと思います。解析<AGARI>タグはたとえば以下のようなXML形式で保存されています。/>直感的に理解できるものやめちゃくちゃわかりにくいものなど色々ありますが、各属性をひとつずつ見ていきます。baこの属性は積み棒および供託のリーチ棒の数を表します。ba="2,3"であれば、2本場で供託リーチ棒が3本の状態でアガったことを表します。haiこの属性はアガリ形の手牌を表します。これには副露した牌は含まれませんが、和了した牌は含まれています。1つの数字が1枚の牌に対応しており、それぞれ0-135の数字が与えられています。同じ種類の牌が4つの数字で区別されていることに注意してください。具体的な対応関係は以下のとおりです。赤牌を採用する場合は同種牌の中でもっとも若い番号の牌が赤牌になります。(たとえば五萬には16-19の数字が割り当てられているが、そのなかでもっとも若い16が赤牌を表す)最初に挙げた例の「hai="8,9,11,20,25,30,36,43,46,50,51,72,79,81"」をこの表に従って置き換えていくと、「三三三六七八12344IIIII」になります。mこの属性は副露したメンツを表します。メンゼンであがった場合はこの属性はありません。非常に複雑なので別記事で解説する予定です。machiこの属性はアガリ牌を表します。数字の対応はhai属性と同じです。上の例の「machi="72"」を置き換えるとI(索子の1)になります。カンマで連結された形式で表現されています。上の例の「ten="30,7900,0"」は30符、7900点、満貫未満を表します。満貫情報の対応は以下のとおりです。役満yakuこの属性はアガリの役情報を表します。数字が2つずつセットになっており、最初の数字が具体的な役を表し、その後の数字が翻数を表しています。このセットを役の数だけカンマで連結しています。「yaku="1,1,2,1,0,1,53,1"」は「立直・1翻、一発・1翻、メンゼンツモ・1翻、裏ドラ・1翻」の計4翻を表しています。数字と具体的な役名の対応は以下のとおりです。役満の場合はこの属性はなく、代わりに次のyakuman属性が付与されます。大三元yakuman役満でアガった場合のみ付与される属性。「yakuman="47"」のような形式で表される。yaku属性と異なり翻数の情報はない。ダブル役満の場合はカンマで連結される。doraHaidoraHaiUraそれぞれ、ドラ表示牌、裏ドラ表示牌を表します。牌の対応はhai属性のものと同じです。どちらもドラそのものではなく「表示牌」であることに注意してください。カンにより増えた場合はカンマで連結されます。立直がない場合はdoraHaiUra属性はつきません。whoアガったプレイヤーの番号を表します。0は起家(東1局の親)を表し、東1局の南が1,西が2,北が3となります。fromWho放銃したプレイヤーの番号を表します。対応はwho属性と同じです。ツモの場合はwhoと同じ番号になることに注意してください。scアガリによる点数移動の情報を表します。「250,-39,250,-20,240,89,250,-20」なら、全員25,000点を持っている状態からプレイヤー3が8,900点でアガリ、プレイヤー1が3,900点、プレイヤー2とプレイヤー4が2,000点を支払ったことを表します。owari終局時の全員の持ち点、ウマを含めたポイント数を表します。最終局のみ付与されます。「owari="225,-17.0,411,50.0,227,3.0,137,-36.0"」なら、最終成績はプレイヤー1は22,500(-17.0)、プレイヤー2は41,100(+50.0)、プレイヤー3は22,700(+3.0)、プレイヤー4は13,700(-36.0)であることを示します。m属性は別の記事で解説予定...は未定。疲れた!カロリーメイトください。(1)MMD4Mecanimを使用してMMDモデルにUnityで踊って頂いてみた。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。