※麻雀ロジック研究会※
■ このスレッドは過去ログ倉庫に格納されています
00011
NGNG麻雀ゲームなんかで強いCPUキャラクターとやると
どうしてもプログラムの方で積み込んでいるとしか思えません。
人間の思考に近づくロジックを話し合いませんか?
0002デフォルトの名無しさん
NGNG0003デフォルトの名無しさん
NGNGアナタの考えたロジックを叩き台にして進めたらどうだろう。
ということで、ネタ振ってちょ。
0004デフォルトの名無しさん
NGNGファジイ推論でルールヲつくって
すべての牌について、それを切ったときの評価をだして
評価の高かった牌を切る
どうよ
00051
NGNGキャラ毎に、ピンフ好き、タンヤオ好きとかにわけるしかないかなぁ
と、考えていますが、それだと上がれないですよね。
つまり強いCPUにはなり得なくなってしまいます。
ただ、前もって積み込みとかにしちゃうと、聴牌状態で
何巡目にリーチを書けて自摸る、とかいう設定になってしまいますし。。。
味気ないキャラクターになってしまいますよね。
ん〜難しいw
0006デフォルトの名無しさん
NGNGその中から一番良いパスを選ぶことを考える。
多分、現在の計算機の能力ではできないので、
1)起きえないであろう選択肢をカットする
・ドラが2枚そろっていたら捨てない。
・終盤で、捨牌に出ていない牌は捨てない
など
2)最後まで読み切れないので、途中の状態で
得点を予測して、そのパスの得点とする。
を考える。
>>4 は 2) の一つの方法
1)でキャラクターの個性を出せるけど、最初は
最強プレーヤーを目指して作成して、機能制限
や評価項目の重み付けの調整で個性を作って
いった方が作りやすい
0007デフォルトの名無しさん
NGNGこんなのがあったな…
0008デフォルトの名無しさん
NGNGその前の年にもあった。
1年に1度は麻雀ネタのスレが立つんだよ。
0009デフォルトの名無しさん
NGNG>まずは、上がりまでの起こりうる未来を全て列挙して、
>その中から一番良いパスを選ぶことを考える。
「良さ」を計る関数の定義が出来ればほぼ終わったようなものな希ガス
関数を考えるに当たって
- 自分の上がりへの近づきとその点数の期待値
- 他家の手を進める、または振り込む期待値
くらいなのかな。
「上がりへの近づき」や「手を進める」というのをどう数値化するかが難しそう。
00101
NGNG>その中から一番良いパスを選ぶことを考える。
手牌からその可能性を計算して、
ツモるたびにその可能性を狭めて行くやりかたですかね?
ある程度の前例をデータとして保持し、その型にあったやり方で
進行して行く訳ですか。
人間にも経験というものがありますし、これはいいですね。
記憶として対戦相手の思考もコピーしていくような、
ロジックもいれると面白そうですね。
役が成立するパターンの配牌を記憶し、
自分の配牌をそれにあてはめて、前例だとこの役が成立する予定だから
それを必死に集めるとか。
0011デフォルトの名無しさん
NGNG例えば相手の捨て牌から予想するような。
0012デフォルトの名無しさん
NGNGロジックを実装できるような
プログラムを用意するべきだと思います
0013デフォルトの名無しさん
NGNG00141
NGNGプログラム自体はあります。
役判定はライブラリとか使ってますが・・・
ただ、決まった打ち方しか出来ないんですよね。
ピンフを中心に構成していくとか、
アンコばかり集めるとか・・・
さらにCPUを強化するには積み込むしかないし・・・
その辺を今後、研究していければいいと思っています。
将棋とか、囲碁と違って運もかなりゲーム要素に影響するので
なかなか難しいところではあります。
00151
05/01/17 10:59:28安全牌を計算しないといけないですね。
実装すると、モッサリしそうですが、
搭載したいきのうです。
0016デフォルトの名無しさん
05/01/18 01:45:26対戦させられるような仕組みがあったら面白そう。
>12の言ってるのもそういうことじゃないのかな。
00171
05/01/21 15:01:21私も、現在、納期前でいそがすぃし
0018デフォルトの名無しさん
05/01/21 20:10:05>私も、現在、納期前でいそがすぃし
後先考えずにスレを立てる暇だけはあったのか・・・
0019デフォルトの名無しさん
05/01/25 23:54:34ttp://members.jcom.home.ne.jp/hennano/maujong/java/
00201
05/01/31 19:14:11軽はずみにスレ立てちゃいかんねv(>_<)v
0021デフォルトの名無しさん
05/02/11 04:36:53確率的に最善の手探しても、結局は運だろうから。
0022デフォルトの名無しさん
05/02/11 20:48:40ロトコルみたいのって麻雀ではないの?
0023デフォルトの名無しさん
05/02/14 19:16:40漏れの使いかたが悪いのか、
http://www.interq.or.jp/snake/totugeki/mjcom_p0.htm
これを実装するとスタックオーバーフローになってしまいまつ。
0024デフォルトの名無しさん
05/02/15 02:36:37ぱっと見ありそうなのは先頭の
>for(;!tehai[i];i++)if(i>=43){return;} //上がっている場合ここが実行される
で i=0とかしてたり?
0025デフォルトの名無しさん
05/02/15 02:41:420026デフォルトの名無しさん
05/02/15 02:58:24自分の脳内トレーサじゃ >>24しか思い浮かばないや・・・
0027デフォルトの名無しさん
05/02/15 16:27:30あまり変数はいじってないんですけどね。
return の前に悪いやりかただろうけど大域変数のflagを使ってるだけで・・・
この人麻雀研究で有名だし、やっぱり漏れが悪いんだろうなあ。
0028デフォルトの名無しさん
05/02/15 17:00:06どんな使いかたしてるの?
見てあげるからソース貼ってみそ。
0029デフォルトの名無しさん
05/02/15 17:56:17クソコーディングすまそ。
最初、イーシャンテンでテンパイまでの受け入れ枚数を数えるプログラムを
作ってみようと思ったんですけど(鳴き、チートイ、国士はまだ)
どうもagari_checkのところで何かおかしなことになってるっぽいんです。
0030デフォルトの名無しさん
05/02/15 18:19:05この状態でスタックオーバーフローになるの?
0031デフォルトの名無しさん
05/02/15 18:43:48VC++6のデバックモードだと、きちんと表示されるんですが
リリースモードと、BCCでは、最後のprintfが表示されないんです。
何が原因なのかなあ。
003228
05/02/15 18:49:23tehai[43]で面子を作ろうとして無限ループ(再帰)してるな。
この関数はtehai[43]==0を前提にしているらしい。
tehaiの定義を 1増やして、
int tehai[44]=
{0, 0, 3, 0, 0, 0, 0, 0, 0, 0, //0-9
0, 0, 0, 1, 1, 1, 0, 0, 0, 0, //10-19
0, 2, 1, 1, 1, 1, 1, 1, 0, 0, //20-29
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //30-39
0, 0, 0, 0}; //40-43
で、うまくいくかも。
0033デフォルトの名無しさん
05/02/15 19:05:53おお、最後きちんと表示されるようになりました。
まだおかしなところがあるかもしれませんが、とりあえず前進しました。
ありがとうございますm(__)m
0034デフォルトの名無しさん
05/02/15 21:36:58こんな牌のフリーの絵ってどこかにないですか?
0035デフォルトの名無しさん
05/02/15 22:17:17漢字フォント作るより楽だと思うよ。
0036デフォルトの名無しさん
05/02/17 09:56:47そんなこといわずに教えてください
0037デフォルトの名無しさん
05/02/17 12:09:45統計的には確実に強い打ち方になるぞ
0038デフォルトの名無しさん
05/02/17 18:09:47http://www.geocities.jp/aposhine/tiles.html
0039デフォルトの名無しさん
05/02/17 18:14:48http://www.mahjong.to/sozai/readme.htm
0040デフォルトの名無しさん
05/02/17 18:49:480041デフォルトの名無しさん
05/02/18 09:30:23対戦させられるような仕組みは、
>>7の「MJSim」、>>19の「まうじゃん」というところか・・・
で、作っている人いるの?
0042デフォルトの名無しさん
05/02/19 17:46:05それだけで結構難しくない?
0043デフォルトの名無しさん
05/02/19 18:07:360044デフォルトの名無しさん
05/02/21 00:25:39実際にさまざまなルールを統合してプログラムを作成しようとすると、
あちらこちらに矛盾点が出てくるんだよね。
実際にゲームをしている時には殆ど発生しない
レアなケースでのみ起こる矛盾点もプログラムにする以上、
ちゃんと解決しなくちゃいけないし。
例えば、「完全先付け」とかさ・・・
あれ考えた奴、脳みそのネジが5,6本、抜け落ちているんじゃないのか?
0045デフォルトの名無しさん
05/02/21 00:56:34C++の悪口はやめてください
0046デフォルトの名無しさん
05/03/01 14:16:30何でもいいので教えてください
0047デフォルトの名無しさん
05/03/06 21:02:000048デフォルトの名無しさん
05/03/06 23:45:51探すのめんどいから何号かは知らん。
0049デフォルトの名無しさん
05/03/07 00:13:54ゲームプログラミング
『遊びのレシピ』
ttp://www.cmagazine.jp/books/recipe/
0050デフォルトの名無しさん
05/03/19 18:18:59そもそも上がり、いやテンパイにまで持って行けるの?
と言ってみるテスト
0051デフォルトの名無しさん
05/03/19 18:21:49>例えば、「完全先付け」とかさ・・・
>あれ考えた奴、脳みそのネジが5,6本、抜け落ちているんじゃないのか?
タコ麻雀対策だろ。
麻雀格闘倶楽部やってるとたまに後付で勝つウザイ香具師が多い
005244
05/03/20 20:36:31いや、俺が思うに、多分あのルールは
筋者の方々が素人さん相手に勝負をする時に
散々難癖を付けて、カネを搾り取るためのものだと思う。
その理由は・・・
1.ルールの出自が関西であり、今も関西でしか行われていない
2.「完全先付け」には様々なパターンと、それに対する様々な解釈があり、
それら全てをゲームの前に確認しておくのは不可能
3.その後のゲーム中で、事前に確認が取れなかったケースが
発生した場合、間違いなく腕力の強い奴の主張がまかりとおる
まぁ、そんな深読みをしなくても、実際にプログラミングをしてみれば
すぐ分かる。
「完全先付け」がどれほどトチ狂ったルールであるかが・・・
■ このスレッドは過去ログ倉庫に格納されています