JavaScript

電脳麻将 ver.1.6.0 公開

電脳麻将 を ver.1.6.0 にバージョンアップしました。 牌の危険度の計算方法を改善 牌譜解析ツールを削除 赤牌を識別しやすいデザインに変更 パッケージを最新化 が主な修正です。

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

電脳麻将 の現在の押し引きアルゴリズムは親に対する考慮がない。牌の危険度計算アルゴリズム(1) - koba::blog までの 絶対危険度 は危険度を現物、字牌、スジ、無スジのように離散的に扱っており、危険度の値は序列を表しているに過ぎなかったのだが、牌の…

ソバテン・裏スジは危険?

リーチ宣言牌のスジは危険? - koba::blog に続いて 牌譜解析ツール で リーチ宣言牌と同種の数牌、最初に切られた数牌と同種の数牌 について危険度*1の統計をとってみた。 数牌の平均危険度 リーチ宣言牌との相関 最初に切られた数牌との相関 *1:危険度 = …

リーチ宣言牌のスジは危険?

電脳麻将 の牌譜解析機能を npm パッケージ化しました。 @kobalab/majiang-analog - npm 電脳麻将形式の牌譜を解析する基底クラスを提供します。本クラスのサブクラスを作成し、解析のためのプログラムを書く ことができます。天鳳の牌譜も tenhou-log で電…

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

牌の危険度計算アルゴリズム(2) - koba::blog で実現した牌の 相対危険度 を押し引きに適用する。従来は手牌を 愚形*1、好形*2、超好形*3 の3種、切る牌を 安全*4、危険*5 の2種に分類し、以下のパターンで押し引きを決定していた。 安全牌あり 安全牌なし …

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

牌の危険度を評価する際に「スジをカウントする」のが最近のトレンドのようである*1。これは「終盤になり安全牌が増えればその分残った牌の危険度が上がる」という考え方で、相対危険度 のようなもの。牌の危険度計算アルゴリズム(1) - koba::blog で実装し…

麻雀ルールのカスタマイズ(2) ~ 流局処理と連荘判断

電脳麻将 ver.2.0 で開発中の新機能「パラメータによるルールのカスタマイズ」。麻雀ルールのカスタマイズ(1) ~ 終局判断とポイント計算 - koba::blog に続き今回の話題は 流局処理 と 連荘判断。これらに関わるパラメータは以下の通り。 途中流局あり 流し…

麻雀ルールのカスタマイズ(1) ~ 終局判断とポイント計算

電脳麻将 ver.2.0 で開発中の新機能「パラメータによるルールのカスタマイズ」で終局判断とポイント計算に関わるパラメータは以下の通り。 配給原点 順位点 場数 トビ終了あり オーラス止めあり 延長戦方式

麻雀ルールのカスタマイズ(0) ~ ルール一覧

電脳麻将 ver.2.0 開発 における目玉の一つが パラメータによるルールのカスタマイズ である。具体的なパラメータ一覧は ルール · kobalab/majiang-core Wiki · GitHub に記した通り。これらを組み合わせてカスタマイズ可能とする。実装予定のパラメータでど…

電脳麻将改造中

4月から 電脳麻将 の次期バージョン(ver.2.0 とする予定)への改造作業を開始しています。 ネット対戦機能 ルール変更対応 不正な牌姿への対応 バリアフリー対応 が主な予定改造項目です。

nginxによるsocket.ioプロキシの設定

nginx のインストールと設定 - koba::blog で nginx を導入した目的は、WebSocketを使用したWebアプリを提供することであった。なので今回は実際に socket.io を使用した 簡単なWebアプリ にリバースプロキシからアクセスしてみた。

電脳麻将におけるMVCの実装

電脳麻将 は HTML5 + CSS3 + JavaScript で動作する SPA です。こういったアプリを実装する場合、現在は React や Vue を使って宣言的に書くのがあたりまえで、jQueryはオワコン といわれています。ですが電脳麻将はあえて jQuery を使って MVC に基づいて実…

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

GitHubに脆弱性警告が通知されていた。pug-code-gen を 2.0.2 → 2.0.3、pug を 2.0.2 → 3.0.1 にアップデートせよとのお達しである。pug を 2.0.2 → 3.0.1 にアップデートすれば pug-code-gen も 3.0.x にアップデートされるようなので、pug だけアップデー…

牌の危険度計算アルゴリズム(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でも動…