JavaScript

牌の危険度計算アルゴリズム(1)

天鳳鳳凰卓の牌の危険度表 - koba::blog で天鳳鳳凰卓での牌の危険度と待ちの形の出現度を集計したが、その結果を 電脳麻将 の押し引きに反映する。まず前回の2つの表の条件を掛け合わせて集計し直した。

電脳麻将 ver.1.5.0 公開

電脳麻将 を ver.1.5.0 にバージョンアップしました。 押し引きアルゴリズムの改善 牌譜ビューアのUIを改善 デバッグ機能の改善 が主な修正です。

押し引きアルゴリズムの改善(3)

押し引きアルゴリズムの改善(2) - koba::blog で1シャンテンまでの押し引きを改善したので、今回はテンパイ時の押し引きを改善する。 ポンテン・チーテンをとる条件を変更 超愚形ならオリるよう修正 好形でないならリーチせず無スジは切らないよう修正 の3つ…

押し引きアルゴリズムの改善(2)

押し引きアルゴリズムの改善(1) - koba::blog で全ての打牌について1つ1つ押し引きを判断できるようになったので、押し引き表の牌姿は評価値何点? - koba::blog で言及した「評価値を基準とした押し引き判断」を実装する。

押し引きアルゴリズムの改善(1)

先制リーチを受けた場合、電脳麻将 は ベタオリのアルゴリズム - koba::blog で「仮実装」したアルゴリズムにしたがい打牌を選択しているが、今回これを改善したい。まず最初に改善目標を明確にするために、2019年の天鳳鳳凰卓の牌譜から先制リーチを受けた…

デュプリケート麻雀の実装

電脳麻将 の思考アルゴリズムを改善したときはプログラム同士を自動対戦させて効果を検証している。現在のアルゴリズムの場合、1000戦の試行に5時間くらいかかる*1のだが、麻雀には運の要素があるため同一のプログラム同士を対戦させても1000戦では平均順位…

牌山と河のデータ構造

麻雀の手牌を表示するプログラム - koba::blog に続いて牌山と河を表示するプログラムを説明しようかと思いましたが、そのためにはまず牌山と河がJavaScriptでどのように表現されているかを知る必要があります。ということで今回は牌山と河のデータ構造につ…

麻雀の手牌を表示するプログラム

電脳麻将 は HTML5 + CSS3 + JavaScript で動作しています。手牌もHTML5とCSS3だけで表示しています。今回は以下の手牌を例に、どのように表示しているか説明します。手順は以下の流れになります。 牌譜形式 → JavaScript形式 に変換 JavaScript形式 → HTML …

電脳麻将 ver.1.4.0 公開

電脳麻将 を ver.1.4.0 にバージョンアップしました。 牌譜集計機能を追加 検討モードがスマートフォンに対応 牌譜ビューアのUIを改善 IE11 などの古いブラウザのサポートを終了 天鳳牌譜変換ツールを削除 src/ 配下のソース構成を整理 が主な修正です。

電脳麻将のプログラム構成(1) 〜 JavaScript編

電脳麻将のプログラム構成(0) ~ 全体編 - koba::blog に続き、今回はJavaScriptのプログラム構成。電脳麻将 の プログラム は全てJavaScriptで記述しています。プログラムは以下に分類できます。 共通モジュール 画面系モジュール ページ毎モジュール 開発…

電脳麻将のプログラム構成(0) ~ 全体編

電脳麻将 のプログラム構成について。ver.1.0.0 より電脳麻将は、npm対応のパッケージ になっています。ソースからビルドするには Node.js と npm が必要になりました。今回はこの新しいプログラム構成について説明します。次回リリースする ver.1.4.0 で構…

電脳麻将で天鳳の牌譜を検討する

天鳳の牌譜形式を解析する(1) - koba::blog 〜 天鳳の牌譜形式を解析する(4) - koba::blog で作成した 天鳳 の牌譜を 電脳麻将 形式に変換するツールをJavaScriptに移植し、npmパッケージ化しました。この機能を利用すれば、天鳳の牌譜を変換して 電脳麻将: …

麻雀アプリに「牌操作」はあるのか?

麻雀アプリのストアでの評価を見ると「牌操作がひどい」というように牌操作という言葉を聞くことがあります。ここでいう牌操作とは、 配牌が何らかの意図で偏らされている*1 局開始後にツモが意図的に変更される*2 という意味で使われているようです。では、…

電脳麻将 ver.1.3.0 公開

電脳麻将 を ver.1.3.0 にバージョンアップしました。 牌譜ビューアに「検討モード」を追加 HTMLの部品化のために Pug を導入 URLフラグメントで表示モードを指定できるようにした スマートフォン用表示の手牌のサイズを大きくした IEで「何切る解答機」を使…

電脳麻将 ver.1.2.0 公開

電脳麻将 を ver.1.2.0 にバージョンアップしました。今回の修正はツール類の改善のみです。 自動対戦のページに以下の機能を追加 牌譜ダウンロード 手牌表示 ツモ切り表示 牌譜ビューアがURLフラグメント*1を表示するようにした 牌理のページでURLフラグメ…

npm モジュールのセキュリティアップデート

GitHubに置いているソースが脆弱性の警告を受けました。どうやら lodash に脆弱性があるようです。こういう場合、npm 6.1.0 で追加されたコマンド npm audit fix を使う事で適切にバージョンアップすることができるのですが、今回は npm auditを実行しても f…

電脳麻将 ver.1.1.0 公開

電脳麻将 を ver.1.1.0 にバージョンアップしました。 「何切る解答機」のページを追加 webpack4に対応 AIの牌姿評価結果を一覧表示する 何切る解答機 のページを追加しました。牌姿は 麻雀の手牌の文字列表現 - koba::blog の形式で入力できます。IEでも動…

webpack4 へのアップグレード

フロントエンド開発の環境構築 - koba::blog で開発環境を構築した当時は webpack3 が最新だったのですが、その後 webpack4 が出ているのでアップグレードしました。

電脳麻将 ver.1.0.0 公開

電脳麻将 を ver.1.0.0 にバージョンアップしました。npm対応のパッケージになったので、ソースからビルドするには Node.js と npm が必要です。機能面では以下を変更しています。 画面表示/UIを改善 ネット上の牌譜を読み込む機能を追加 天鳳形式の牌姿文字…

向聴数を求めるプログラム(修正版)

麻雀の副露判断アルゴリズム(2) - koba::blog で「特定の役への向聴数」を計算する方法を導入したが、バグがあるようである。例えば下記の2つの牌姿の(索子の)混一色への向聴数は 2向聴 3向聴 であるが、ともに2面子2搭子のため、同一の向聴数と判定してしま…

フロントエンド開発の環境構築

電脳麻将 は HTML5 + CSS3 + JavaScript で動作するフロントエンドのWebアプリです。サーバ側にコードはありません。ですので今までは Node.js を使わずに開発していました。思考アルゴリズムの検証でAI同士に自動対戦をさせる場合もブラウザ上で実行してい…

電脳麻将 ver.0.9 公開

電脳麻将 を ver.0.9 にバージョンアップしました。 AIが打点を意識した手作りをするようにした ゲーム進行速度調整の方式を変更 牌画入力ツールが \ で次の1文字をエスケープできるようにした 牌譜ビューアが三家和を正しく表示できるようにした 天鳳牌譜変…

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

麻雀の打牌選択アルゴリズム(4) - koba::blog から 麻雀の副露判断アルゴリズム(5) - koba::blog まで打牌選択と副露判断に打点を考慮するよう改良してきたが、今回で最終回。一色手を狙わせてみる。前回のアルゴリズムで1000半荘対局させると一色手(混一色…

麻雀の副露判断アルゴリズム(5)

麻雀の打牌選択アルゴリズム(8) - koba::blog までのアルゴリズムで打牌の選択に打点を考慮した評価値*1を使用するよう修正したが、今回はその評価値を副露判断にも使用するよう改良する。副露判断に評価値を使用することで以下の効果が期待できる。 シャン…

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

ドラ から何を切るか?*1候補となるのは、打 (待ち 16枚)、打 (待ち 16枚)。麻雀の副露判断アルゴリズム(4) - koba::blog までのアルゴリズムでは がポンできることを重視し だが、麻雀の打牌選択アルゴリズム(7) - koba::blog のアルゴリズムは2向聴以降は…

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

麻雀の打牌選択アルゴリズム(6) - koba::blog でシャンテン戻しを仮実装したが、問題が残っている。 のテンパイから を切って1向聴に戻してしまう。また の国士無双テンパイからも をツモ切りしてしまう。今回はこの問題を修正する。

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

麻雀 傑作「何切る」300選 からの出題。*1ドラ から何を切るか?打 か でテンパイだが、三色、一通の可能性を残し、打 でテンパイとらずが正解のようだ。今回はこのシャンテン戻しについて検討する。 *1:すでに続編の 麻雀 定石「何切る」301選 が出ているが…

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

麻雀の打牌選択アルゴリズム(4) - koba::blog で説明したアルゴリズムを実装していく。

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

麻雀の打牌選択アルゴリズム(3) - koba::blog、麻雀の副露判断アルゴリズム(4) - koba::blog までである程度の手作りはできるようになったが、和了打点を意識した手作りができていない。例えばドラ でテンパイした場合、 打 : 待ち(両面8枚)の平和 (30符1翻)…

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

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