
キャラクター
・ベースになる1人を作っており完成次第、これに個性を持たせ6-8人程度作る予定。	
・現在はベースの1人が3キャラ分での対局となっています。

麻雀牌の絵柄
・15年以上前にネットで配布されていたフリー素材のフォントを使っています。
・新しいものに変える予定です。

CG
・最終的には誰かに頼んで書いてもらい、ほぼ差し替える予定です。
・差し替えるつもりなので、中途半端な(未完成の)CGを使っていますが、ご了承ください。

音声
・20年ほど前に作ってもらったものを使っています。いずれ差し替える予定です。
・キャラ別に作る、または、作ってもらうつもりです。

BGM
・麻雀のBGMというのが思いつかないので、無くていいかと思っています。
・必要ならそれぞれが思い思いの音楽をかけて遊んでもらえると助かります。

-------------------------------------------------------

牌山　残り枚数の表示


捨て牌をみておりる
・国士無双
・染め手（一応入れてありますが、判別プログラムが雑なのでよく間違います）

回し打ち（押し引き）
・七対子
・国士無双

回し打ち/オリながらあがりを目指す
・現状、オリている時は相手の待ち牌を読まずに、現物か通りやすい牌を選んで捨てていく
⇒押し(危険牌を捨てる)にするにあたり、相手の待ち牌を読まないのはそのまま
⇒安全な牌の中から、テンパイが狙えるように選んで捨てていくようにしたい

得点により狙う役を決める

おりるかどうかの判定
・現状、テンパっていれば、ほぼおりずにテンパイの維持にさせている
・得点や待ち、あがりの翻数の状況により、おりる選択もさせるようにする

よくわからない打ち方
・門前からの大明カン
・無理だと思われる手牌からの染め手
・序盤から形式テンパイ狙い？
・意味がわからない単騎待ち

打ち間違え
・一定確率で間違った牌を捨てさせる？（ダメキャラ特性の1つとして）

特定の役を狙う
以下の役を狙うCOMのAIは、まだ実装していません。
・三色同刻
・三カンツ / 四カンツ
・混老頭 / 清老頭 
・緑一色
・九連宝燈
三色同刻、混老頭、四暗刻などは対々和を狙っていたら偶々できることはあると思いますが、
緑一色、九連宝燈などは狙わないので、まずあがることはないと思います。

キャラクターの作成
・キャラ別のAIにする

演出の追加
・自動でカンやチーの対象が選ばれる時、他の牌が選択状態として表示されてしまう
・描画タイミングの調整

環境の設定
・あがり時の得点表記、あがり役と符の表示非表示の切り替え
・安牌の表示 / 切り替え
・あがり役に符計算の有無を追加
・COMのAIメッセージの表示
・フレームレートの変更
・捨て牌の時間カウントの有無

・対局譜の作成
・なぜそれを捨てるのか理由を表示

音声の追加
・ポン、チー、ロンなどキャラ別に作成

効果音の追加
・鳴く対象の牌が出た時、牌山を積み終わったときなどに追加予定
・カチャ　ドラをめくった時
・ピッ　　鳴ける牌が場に出た時

---------------------------------

荒牌(通常流局)のテンパイ宣言

麻雀の流局時に行うテンパイの宣言は、
4鳴き時や立直後などテンパイが確定されていない状態であれば
テンパイであってもノーテンと宣言しても構いません。
もちろん、ノーテンとして扱われ、ノーテン罰符は払います。

コンピューターの親は1位で、ある程度得点があった場合は
テンパイであっても、ノーテン申告をして場を流すことがあります。

例えば、南3局の親で1位、2位と2万点差があった場合
連荘で親を続けた結果、2位にツモられたり、高いものに振り込んで
点差が縮まってオーラスを迎えるより、ノーテン罰符を払って
その差でオーラスを迎えた方が1位を狙いやすいと判断するためです。

今後プレイヤーも親のテンパイ時にノーテン申告できるようにはする予定です。
子の時はノーテンの申告をする意味がほぼないため、親だけと考えています。

テンパイでもノーテンで申告できることにより、遅く申告した方が優位になるのを防ぐため、
親から順番にノーテンかテンパイかを申告するというルールになっています。
実際、リアルでもネットでもそこまで厳密にやることはないと思いますが、一応知識として。


-----------------------------------

キャラクターAI

最終的にキャラクターを複数体作り、それぞれ特徴を付けていきたいと思っています。
現状はとりあえずAIを色々作り、1つのキャラクターに全部を採用しています。
そのため、打ち方、捨て牌選択がパターン化されているものが多くみられますが
キャラクターを複数作り、それぞれをランダムで対局させるようになれば
これらは解決できると思っています。

打ち方にランダム要素を入れない

例えば、配牌の時点で白発中を1枚ずつ持っていたとします。
この中から1つ捨てる場合、場にそれぞれ何枚出ているか、ドラかどうかで判断します。
どれもドラでない、場に1枚も出ていないと同じ条件の時、
牌を捨てる順に 白⇒発⇒中 の順で優先順位を設けています。

本来はパターン化をさけ、ランダムで選ぶのがベストなのですが
コンピューター麻雀であるがため、白で待っているのに白を最後まで捨てなかったら
納得がいかない部分が出てくると思います。
なので、ランダム性を避け、パターン化させています。

これだけだと、白が場にもっともでやすいとなってしまいますが、
上のキャラクターAIで書いたように、キャラクター別に優先順位を変えれば
ある程度問題は解決できると思います。

その結果、キャラクター①は白発中の順に設定されているため、
1順目に発を捨てた場合は手牌に白を1枚では持っていないとわかり、
AIとして不都合な部分もありますが、なぜそれを捨てるかがわかった方が
ランダムにするより納得ができて良いと考えています。


・キャラ0

ユーザー

・キャラ1 作者

作者があるネット麻雀でのみやっている打ち方、考え方をベースにしたもの

・キャラ2 初心者

youtubeで初心者はまずはこのように打てという動画を参考にしたもの
・字牌 ⇒ 1,9 ⇒ 2,8 ⇒ 3,7 ⇒ 4,6 ⇒ 5 の順で孤立牌を捨てていく
・誰も立直していなければ、待ち牌が3枚以上あれば立直する
・相手の立直に対して、ノーテンならベタオリ
・むやみに役を狙わない。(一気通貫、三色同色は確定しない限り考えない)
・安牌の確保はしない。確保するとその分、待ちがせまくなるため
・誰かが立直してベタオリ中、鳴けばテンパイでも待ち牌が2枚以下は鳴かない

----------------------------------------------------------

評価値の実装 (下記はメモ、数値は適当)

手牌を数値化し、最も高くなる手牌にしていく

順子・刻子　1つにつき+100　最大4ブロック
対子　1つにつき+40　最大5ブロック  待ち牌1毎につき+1
両面待ち　1つにつき+40　最大4ブロック  待ち牌1毎につき+1 　
カンチャン　1つにつき+28(端は+25)　最大4ブロック  待ち牌1毎につき+1 　
ペンチャン　1つにつき+18　最大4ブロック  待ち牌1毎につき+1 　

上記にドラを含んでいたら+10、待ち牌がドラだったら+5
全員に対する安牌があれば、1毎につき+2

役に対して (上記とは別にする？)

断ヤオがあれば+10 喰い断ありルールならさらに+10
一盃口があれば+10
三色が確定していれば+10
など、手牌から1枚抜いた値をそれぞれ出していき、値が最も高くなるものを捨てるようにする。
