- 1 名前:1 mailto:麻雀ってまぁまぁじゃん [05/01/10 13:48:12]
- 麻雀のロジックについて研究しませんか?
麻雀ゲームなんかで強いCPUキャラクターとやると どうしてもプログラムの方で積み込んでいるとしか思えません。 人間の思考に近づくロジックを話し合いませんか?
- 8 名前:デフォルトの名無しさん mailto:sage [05/01/10 18:54:15]
- >>7
その前の年にもあった。 1年に1度は麻雀ネタのスレが立つんだよ。
- 9 名前:デフォルトの名無しさん mailto:sage [05/01/10 19:24:26]
- >>6
>まずは、上がりまでの起こりうる未来を全て列挙して、 >その中から一番良いパスを選ぶことを考える。 「良さ」を計る関数の定義が出来ればほぼ終わったようなものな希ガス 関数を考えるに当たって - 自分の上がりへの近づきとその点数の期待値 - 他家の手を進める、または振り込む期待値 くらいなのかな。 「上がりへの近づき」や「手を進める」というのをどう数値化するかが難しそう。
- 10 名前:1 mailto:sage [05/01/10 21:02:21]
- >まずは、上がりまでの起こりうる未来を全て列挙して、
>その中から一番良いパスを選ぶことを考える。 手牌からその可能性を計算して、 ツモるたびにその可能性を狭めて行くやりかたですかね? ある程度の前例をデータとして保持し、その型にあったやり方で 進行して行く訳ですか。 人間にも経験というものがありますし、これはいいですね。 記憶として対戦相手の思考もコピーしていくような、 ロジックもいれると面白そうですね。 役が成立するパターンの配牌を記憶し、 自分の配牌をそれにあてはめて、前例だとこの役が成立する予定だから それを必死に集めるとか。
- 11 名前:デフォルトの名無しさん mailto:sage [05/01/10 22:28:43]
- 振り込むリスクも考えないといかんなあ…
例えば相手の捨て牌から予想するような。
- 12 名前:デフォルトの名無しさん mailto:sage [05/01/12 01:01:49]
- >>1
ロジックを実装できるような プログラムを用意するべきだと思います
- 13 名前:デフォルトの名無しさん mailto:sage [05/01/12 08:14:12]
- もうある
- 14 名前:1 mailto:sage [05/01/12 11:09:47]
- >>12
プログラム自体はあります。 役判定はライブラリとか使ってますが・・・ ただ、決まった打ち方しか出来ないんですよね。 ピンフを中心に構成していくとか、 アンコばかり集めるとか・・・ さらにCPUを強化するには積み込むしかないし・・・ その辺を今後、研究していければいいと思っています。 将棋とか、囲碁と違って運もかなりゲーム要素に影響するので なかなか難しいところではあります。
- 15 名前:1 mailto:sage [05/01/17 10:59:28 ]
- 牌に積み込む計算は
安全牌を計算しないといけないですね。 実装すると、モッサリしそうですが、 搭載したいきのうです。
- 16 名前:デフォルトの名無しさん mailto:sage [05/01/18 01:45:26 ]
- このスレの住人が、ロジックを適当な言語で実装したモノを持ち寄って
対戦させられるような仕組みがあったら面白そう。 >12の言ってるのもそういうことじゃないのかな。
- 17 名前:1 mailto:sage [05/01/21 15:01:21 ]
- 面白いかもしれないけど、みんな暇じゃないですよね。
私も、現在、納期前でいそがすぃし
- 18 名前:デフォルトの名無しさん mailto:sage [05/01/21 20:10:05 ]
- >>17
>私も、現在、納期前でいそがすぃし 後先考えずにスレを立てる暇だけはあったのか・・・
- 19 名前:デフォルトの名無しさん [05/01/25 23:54:34 ]
- こんなの見つけた
ttp://members.jcom.home.ne.jp/hennano/maujong/java/
- 20 名前:1 mailto:sage [05/01/31 19:14:11 ]
- ごめんよ。仕事の合間にふと思ってさ。
軽はずみにスレ立てちゃいかんねv(>_<)v
- 21 名前:デフォルトの名無しさん mailto:sage [05/02/11 04:36:53 ]
- 麻雀だと将棋スレみたく、最強を目指すと言うわけにはいかないのかな。
確率的に最善の手探しても、結局は運だろうから。
- 22 名前:デフォルトの名無しさん mailto:sage [05/02/11 20:48:40 ]
- 将棋におけるCSAプロトコルみたいな、ある程度標準となるネットワーク対戦プ
ロトコルみたいのって麻雀ではないの?
- 23 名前:デフォルトの名無しさん [05/02/14 19:16:40 ]
- 誰か、和了チェック関数見せてくれませんか?
漏れの使いかたが悪いのか、 www.interq.or.jp/snake/totugeki/mjcom_p0.htm これを実装するとスタックオーバーフローになってしまいまつ。
- 24 名前:デフォルトの名無しさん mailto:sage [05/02/15 02:36:37 ]
- ループ終わらずにネストし続けてしまってるんだよね。
ぱっと見ありそうなのは先頭の >for(;!tehai[i];i++)if(i>=43){return;} //上がっている場合ここが実行される で i=0とかしてたり?
- 25 名前:デフォルトの名無しさん mailto:sage [05/02/15 02:41:42 ]
- i=0しても下スルーされるから関係無いか。
- 26 名前:デフォルトの名無しさん mailto:sage [05/02/15 02:58:24 ]
- すまん、やっぱりあるね。
自分の脳内トレーサじゃ >>24しか思い浮かばないや・・・
- 27 名前:デフォルトの名無しさん mailto:sage [05/02/15 16:27:30 ]
- >>24
あまり変数はいじってないんですけどね。 return の前に悪いやりかただろうけど大域変数のflagを使ってるだけで・・・ この人麻雀研究で有名だし、やっぱり漏れが悪いんだろうなあ。
- 28 名前:デフォルトの名無しさん mailto:sage [05/02/15 17:00:06 ]
- その関数は悪くないと思うよ。
どんな使いかたしてるの? 見てあげるからソース貼ってみそ。
- 29 名前:デフォルトの名無しさん mailto:sage [05/02/15 17:56:17 ]
- kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/212.txt
クソコーディングすまそ。 最初、イーシャンテンでテンパイまでの受け入れ枚数を数えるプログラムを 作ってみようと思ったんですけど(鳴き、チートイ、国士はまだ) どうもagari_checkのところで何かおかしなことになってるっぽいんです。
- 30 名前:デフォルトの名無しさん mailto:sage [05/02/15 18:19:05 ]
- そのままコンパイルして実行してみたけど、問題無かったよ。
この状態でスタックオーバーフローになるの?
- 31 名前:デフォルトの名無しさん mailto:sage [05/02/15 18:43:48 ]
- スタックオーバーフローは、恐らくなんですが・・・
VC++6のデバックモードだと、きちんと表示されるんですが リリースモードと、BCCでは、最後のprintfが表示されないんです。 何が原因なのかなあ。
- 32 名前:28 mailto:sage [05/02/15 18:49:23 ]
- >>29
tehai[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 で、うまくいくかも。
- 33 名前:デフォルトの名無しさん mailto:sage [05/02/15 19:05:53 ]
- >>32
おお、最後きちんと表示されるようになりました。 まだおかしなところがあるかもしれませんが、とりあえず前進しました。 ありがとうございますm(__)m
- 34 名前:デフォルトの名無しさん [05/02/15 21:36:58 ]
- www.vector.co.jp/games/review/1013/images_01.html
こんな牌のフリーの絵ってどこかにないですか?
- 35 名前:デフォルトの名無しさん [05/02/15 22:17:17 ]
- そんなに数無いんだし自分で作れば?
漢字フォント作るより楽だと思うよ。
- 36 名前:デフォルトの名無しさん [05/02/17 09:56:47 ]
- >>35
そんなこといわずに教えてください
- 37 名前:デフォルトの名無しさん [05/02/17 12:09:45 ]
- 上がり得点/期待値が最も高い手になるようプログラムすればいいじゃん。
統計的には確実に強い打ち方になるぞ
- 38 名前:デフォルトの名無しさん [05/02/17 18:09:47 ]
- フリーの牌画像発見。ちょっと笑えた。
www.geocities.jp/aposhine/tiles.html
- 39 名前:デフォルトの名無しさん mailto:sage [05/02/17 18:14:48 ]
- ここにもあった。
www.mahjong.to/sozai/readme.htm
- 40 名前:デフォルトの名無しさん mailto:sage [05/02/17 18:49:48 ]
- 1ソーがポイントだなw
- 41 名前:デフォルトの名無しさん mailto:sage [05/02/18 09:30:23 ]
- >>16
対戦させられるような仕組みは、 >>7の「MJSim」、>>19の「まうじゃん」というところか・・・ で、作っている人いるの?
- 42 名前:デフォルトの名無しさん mailto:sage [05/02/19 17:46:05 ]
- あがり判定とか役判定ってどうやんの?
それだけで結構難しくない?
- 43 名前:デフォルトの名無しさん mailto:sage [05/02/19 18:07:36 ]
- 少し上にあるだろ
- 44 名前:デフォルトの名無しさん mailto:sage [05/02/21 00:25:39 ]
- 麻雀のルールって、増築に増築を重ねた「九龍城」みたいなものだからな・・・
実際にさまざまなルールを統合してプログラムを作成しようとすると、 あちらこちらに矛盾点が出てくるんだよね。 実際にゲームをしている時には殆ど発生しない レアなケースでのみ起こる矛盾点もプログラムにする以上、 ちゃんと解決しなくちゃいけないし。 例えば、「完全先付け」とかさ・・・ あれ考えた奴、脳みそのネジが5,6本、抜け落ちているんじゃないのか?
- 45 名前:デフォルトの名無しさん mailto:sage [05/02/21 00:56:34 ]
- >>44
C++の悪口はやめてください
- 46 名前:デフォルトの名無しさん [05/03/01 14:16:30 ]
- 麻雀に関してのプログラムの書いてある本
何でもいいので教えてください
- 47 名前:デフォルトの名無しさん [05/03/06 21:02:00 ]
- age
- 48 名前:デフォルトの名無しさん mailto:sage [05/03/06 23:45:51 ]
- んとね、テクノポリスに書いてあった。
探すのめんどいから何号かは知らん。
- 49 名前:デフォルトの名無しさん mailto:sage [05/03/07 00:13:54 ]
- >>46
ゲームプログラミング 『遊びのレシピ』 ttp://www.cmagazine.jp/books/recipe/
- 50 名前:デフォルトの名無しさん mailto:sage [05/03/19 18:18:59 ]
- >>1
そもそも上がり、いやテンパイにまで持って行けるの? と言ってみるテスト
- 51 名前:デフォルトの名無しさん mailto:sage [05/03/19 18:21:49 ]
- >>44
>例えば、「完全先付け」とかさ・・・ >あれ考えた奴、脳みそのネジが5,6本、抜け落ちているんじゃないのか? タコ麻雀対策だろ。 麻雀格闘倶楽部やってるとたまに後付で勝つウザイ香具師が多い
- 52 名前:44 mailto:sage [05/03/20 20:36:31 ]
- >>51
いや、俺が思うに、多分あのルールは 筋者の方々が素人さん相手に勝負をする時に 散々難癖を付けて、カネを搾り取るためのものだと思う。 その理由は・・・ 1.ルールの出自が関西であり、今も関西でしか行われていない 2.「完全先付け」には様々なパターンと、それに対する様々な解釈があり、 それら全てをゲームの前に確認しておくのは不可能 3.その後のゲーム中で、事前に確認が取れなかったケースが 発生した場合、間違いなく腕力の強い奴の主張がまかりとおる まぁ、そんな深読みをしなくても、実際にプログラミングをしてみれば すぐ分かる。 「完全先付け」がどれほどトチ狂ったルールであるかが・・・
- 53 名前:デフォルトの名無しさん mailto:sage [2005/03/24(木) 10:25:10 ]
- 「完全先付け」というルールの存在自体を無視することをお奨めする
- 54 名前:デフォルトの名無しさん mailto:sage [2005/06/08(水) 23:18:22 ]
- 麻雀AIのロジック。
ツモ麻雀できるロジックを示しす漏れが来ましたよ。 A.総当り式 1、牌を積もる。 ・上がっているーー>「ツモ!」 ・上がってないーー>2、へ 2.捨てられるパイを仮捨てしてみる(捨てられる牌数分のパターンあり) ・積もる牌がまだ有るかーー>3、へ ・もう可能性ツモがないときは、 _・上がりリストから最良のデータを使い捨て牌を決定し捨てる−−>1,へ _・上がりリストがない時は、牌評価数値表からいらないのを捨てる。 3、つもり可能性のある牌をつもってみる。(積もれる可能性分のパターンあり) ・上がりかーー>4、へ ・上がらないーー>2、へ 4.上がり評価 待牌の確立と点数の期待値を計算する。上がりリストに登録。 ・次の可能性ツモ牌が有る時はーー>3、へ 興味があったらageみて。
- 55 名前:デフォルトの名無しさん mailto:sage [2005/06/15(水) 22:34:30 ]
- >>54
まず上がりの判定フローを示せ
- 56 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 02:45:27 ]
- ほい、
BOOL 上がり判定(int 手牌[]) { if(国士か(手牌)) { return TRUE; } if(チイトイか(手牌)) { return TRUE; } for (int i = 0; i < 34; i++) { if (手牌[i] >= 2) { 手牌[i] -= 2; if (面子確認(手牌)) { 手牌[i] += 2; return TRUE; } 手牌[i] += 2; } } return FALSE; } 3つの関数は自分で考えろ。 聞くだけなら、もう何も出ない。
- 57 名前:デフォルトの名無しさん mailto:sage [2005/06/25(土) 14:06:48 ]
- 役判定のソース
ttp://software.nikkeibp.co.jp/software/download/down04c.html
- 58 名前:デフォルトの名無しさん mailto:sage [2005/06/25(土) 15:41:13 ]
- >>56
お〜い、それじゃフリテンと複数の可能性を考えられないぞ〜
- 59 名前:デフォルトの名無しさん mailto:sage [2005/06/27(月) 23:57:32 ]
- >>58
おまえの目は節穴、恥ずかしすぎるぞ。
- 60 名前:デフォルトの名無しさん [2005/08/23(火) 06:35:38 ]
- みんなで麻雀の思考ルーチンを作って、東風荘とかで対決してみたいなあ。
東風荘の画面から牌の情報を読み取ったりするライブラリは >>23のHPで公開されているから、 純粋な思考ルーチンの部分を作るだけでいいし。 age
- 61 名前:デフォルトの名無しさん mailto:sage [2005/08/23(火) 09:38:19 ]
- >>57
麻雀のソースずっと探してたんだ、ありがとう
- 62 名前:デフォルトの名無しさん [2005/08/23(火) 10:02:16 ]
- 「振らない」というのはロジックにどう組み込みますか?
というか、捨て牌から手役の高さと待ちを読むロジックは あまり研究されてない分野と思う
- 63 名前:デフォルトの名無しさん mailto:sage [2005/08/23(火) 10:08:57 ]
- 板違いすぎ
- 64 名前:デフォルトの名無しさん [2005/08/23(火) 10:15:36 BE:79877344-#]
- マージャンはルールが不明な部分が多いんだよな。
カンが四つで流れるってルールとスーカンツは両立しないけど、どうなってるんだとか。 ・一人でカンを四つの場合は流れない ・カンを四つした時点でスーカンツができてなかったら流れる ・その他 とか、いろいろ考えられるけど、本屋に売ってるマージャンの本なんかには 載ってないし。 (なんとか協会とかのルールには決められてるんだろうけど)
- 65 名前:デフォルトの名無しさん [2005/08/23(火) 10:30:26 ]
- >>64
仕様(ルール)の振れ幅は決まってるんだから、たいした問題ではないだろう
- 66 名前:デフォルトの名無しさん mailto:sage [2005/08/23(火) 12:19:22 ]
- >>62
真面目に組むんだったら、捨牌戦略は割と簡単に組める ・裏筋チェック ・壁チェック ・自分の手牌と場に出た牌の数え上げ ・染め手系のチェック ・序盤の中張牌(変則待ち)チェック ・・・といろいろあるが、はっきり言って、上の3つ程度を行えば十分だし、 それ以上やったら、かえって弱くなる傾向がある。 (変則待ちや染め手を警戒するあまり、棒テンにぶち当たる) 本当はプレイヤーの待ち牌をチェックして出さないことだが、それはあくまでも反則ということで。 あと、日本プロ麻雀連盟の公式ルール(抜粋) ttp://www.ma-jan.or.jp/rule.htm あと、スーカンツは1人で4つのカンをした場合に成立し、その場合5つめのカンの発声および牌の提示とともに流局となる。 それ以外の場合は、全て4つめのカンが成立した時点で流れとなる。 カンの成立は、カンをした人が、リンシャン牌をツモり、手牌の中から不要な牌を打牌した瞬間。 (カンドラありのルールの場合、チャンカン時にはカンを行った人の打牌が行われていないため、新ドラが成立しない)
- 67 名前:デフォルトの名無しさん mailto:sage [2005/08/23(火) 15:37:30 ]
- >>66
日本プロ麻雀連盟の公式ローカルルールな
- 68 名前:デフォルトの名無しさん mailto:sage [2005/08/23(火) 15:39:48 ]
- >>66
手役の高さを推測し、期待値計算して自分の手の期待値と比較して 相手のノミ手より自分のとびまんを優先して 危険牌でも打つ みたいな そういうロジックを組みたいよな あと、当然ネットワーク対戦等の 神(サーバ)があり 打ち手(クライアント) があるという構成での最強を目指したいよな
- 69 名前:66 mailto:sage [2005/08/23(火) 16:03:00 ]
- >>68
実は色々やっているんだが、実は「リーチ一発・裏ドラあり」というルールや、 「カンドラ・カンウラあり」とか「赤五ピン・赤五ソーあり」とか 「ウラドラチップ制」などの、祝儀たくさんのインフレ麻雀になればなるほど・・・ (1)自分から見える情報だけで、もっとも待ち牌がたくさんある面子選択を面前で行う。 (2)字牌を除き9-10枚以上同種牌が無いとチンイツに行かない。(ホンイツは想定外) (3)聴牌はもっとも残り枚数が多い形(たいていはリャンメン待ちかその変形) を選択し、リーチを必ずかける(裏ドラが乗るため) (4)相手のリーチはこちらが2シャンテンより遅い場合は全て無視 ・・・という棒テン・即リー・タコツッパリ君AIが強かったりする。 逆に一発ウラドラなしルールだと、AIのウエイト変数を工夫した、 敵側の捨てパイ読み部分のプログラムの作成が楽しくなるのだが。 また同じAIを使っても、棒テン即リー君ばかりのAIx4人の相互対戦の場合とか、 染め屋さんAIが一人入るとか、なんちゃって鳴きの竜AIが入ってくるか、 ・・・またそのAIがどこに座るかによって、対戦結果が有意(5%以上)違ってくるので、面白い。 まだまだ研究途上だけどね。
- 70 名前:60 [2005/08/23(火) 20:35:25 ]
- >>61
Javaでいいなら、ここでダウンロードできるよ。 tp://www5e.biglobe.ne.jp/~tatano/index.html
- 71 名前:61 [2005/08/25(木) 08:38:59 ]
- >>70
おお、ありがとう。思考以前に麻雀動かすだけで四苦八苦ですわ
- 72 名前:デフォルトの名無しさん mailto:sage [2005/09/01(木) 00:53:18 ]
- >>68
点差の問題や残り牌の問題もあるので相当難しくなりそう。 >>69 麻雀格闘倶楽部ではライフ制の香具師がライフ切れ落ちすると次局からCPUになるが そのCPUの下家は圧倒的に有利w
- 73 名前:東風荘じゃ1600程度 [2005/09/01(木) 11:33:02 ]
- おまいら教えてください
最強の麻雀ロジックを作るため研究を始めました。 まずポンチーカンロンなし、役もなしですべてのプレイヤーがひたすら上がりに向かうという シミュレーションを行っているのですが、この状況で誰かが上がる確率が50%にしかなりません。 麻雀そのものにそれほど詳しくないのでこれが妥当なのかよくわからんです 次に今のアルゴリズムを書きます
- 74 名前:東風荘じゃ1600程度 [2005/09/01(木) 11:36:55 ]
- >>73
一枚引いて14枚になったら・・・ IF 聴牌 return どの牌を捨てたら一番待ちが多くなるか() FOREACH hai IN 手牌 仮想手牌 = 手牌からhaiを取り除く 評価(仮想手牌) return 一番評価の高かったhai
- 75 名前:東風荘じゃ1600程度 [2005/09/01(木) 11:42:30 ]
- >>74
評価関数は・・・ 評価(牌の配列) int SCORE WHILE 順子 がある 配列から取り除いて、SCOREに順子値をプラス WHILE 刻子 がある 配列から取り除いて、SCOREに刻子値をプラス WHILE 両面 がある 配列から取り除いて、SCOREに両面値をプラス ・・・ という感じで重要な構成要素から点をつけています。 この両面値などを適当に調整しているのですが、この方法ではパラメータがプログラマの マージャンの知識に依存してしまうし、仮定のような簡単な状況(役なしなど)でなくなった 場合に応用が利きません。 なにかよい方法はないでしょうか?
- 76 名前:デフォルトの名無しさん mailto:sage [2005/09/01(木) 12:21:23 ]
- >>73
>ポンチーカンロンなし、役もなしですべてのプレイヤーがひたすら上がりに向かう という状況なら >誰かが上がる確率が50% そんなもんだろ >>75 >この方法ではパラメータがプログラマのマージャンの知識に依存してしまうし、 >仮定のような簡単な状況(役なしなど)でなくなった場合に応用が利きません。 詰め将棋のように今の手配から上がるまでを総当りで調べる
- 77 名前:東風荘じゃ1600程度 [2005/09/01(木) 13:03:24 ]
- >>76
>詰め将棋のように今の手配から上がるまでを総当りで調べる これをやってしまうと10000回とかのシミュレーションが行えず(時間がかかりすぎるため) 悩んでいます。 しかし50%が妥当なのであれば、そろそろ次のステップに行こうかと思います ・ロンできるようにする ・捨て牌を見る ・役判定をいれる くらいからはじめようかなと思っています
- 78 名前:76 mailto:sage [2005/09/01(木) 16:28:14 ]
- 枝狩り。理想は総当りだが、実際には時間に合わせて読むようにする
それか、数牌だけとか抽象化したモデルで先にデータベース化(定跡)するとか さらに、こちらの番やアニメーション+音声の再生時に読むとか これが難しいなら、積み込みや手牌透視ができるインチキ対戦CPUを作る
- 79 名前:デフォルトの名無しさん mailto:sage [2005/09/01(木) 18:45:41 ]
- >>78
それだととんぷうそうで勝てないんだよね・・・
- 80 名前:デフォルトの名無しさん [2005/09/05(月) 20:11:02 ]
- >>白木
それは違うぞ
- 81 名前:デフォルトの名無しさん mailto:sage [2005/09/05(月) 22:09:10 ]
- 白木って誰
- 82 名前:デフォルトの名無しさん mailto:sage あと、ツバメ返しも [2005/09/06(火) 20:30:20 ]
- >>78
あと、すり替えも。
- 83 名前:デフォルトの名無しさん mailto:sage [2005/09/08(木) 01:49:37 ]
- ブッコぬk(ry
- 84 名前:デフォルトの名無しさん mailto:sage [2005/09/08(木) 11:47:39 ]
- コンピュータ対戦も可能なネット麻雀を作ったら面白いな。
対戦相手はランダムな選出だけど、運良く二人以上が選ばれたら 通しもしていいというルールで。 まあ同一IPからの接続は二人まで、と縛っとけば CATV以外の人はそう困らんでしょう。 山に対する仕掛けが出来なければそれなりにフェアだし。
- 85 名前:デフォルトの名無しさん mailto:sage [2005/09/08(木) 22:53:10 ]
- >>78
手牌透視とかはアーケードの某ネット対戦麻雀でも大々的にやってるらしいな 315 名前:焼き鳥名無しさん[sage] 投稿日:2005/09/07(水) 03:54:12 ID:??? 金突っ込まないと上がれないようにする。これ当然の話。 MJは知らないが、以前組んだオンラインマージャンシステムだと・・・ まずは、リーチをかけようがポンしてもチーしてもツモ牌は変わらないようにする。 すなわち配牌グループ13枚x4,ツモグループ17枚x4程度を事前に作る。 投入資金をパラメータ化しておき、高額支払い者が比較的有利になるように 乱数を使って、ほどほどに偏りのある有利度補正値を適宜決定する。 有利度補正値によって、配牌グループでは、(1)(2)(3)(4),ツモグループでは(1),(2)を作る。 (1)中張牌の出現頻度を10,20,30,40%多いグループを作る (2)特定の柄(ピンズ、ソーズ、マンズ)が10,20,30,40%多い割合で選択されるグループを作る。 (3)場風と字風と三元牌を2枚もしくは3枚含むグループを作る (4)ドラ牌を2枚もしくは3枚含むグループを作る。 なお、何も補正を加えなくてもいい場合は、完全ランダムで牌を選ぶ。 テストプレイでは、中張牌が20%程度多い配牌で、同様のツモグループにするだけで、 飛躍的に得点が伸びるし、リーチ一発も多くなる。 しかも、一見して細工しているのがわからない。 役満(三元牌を5枚以上積み込む)などの露骨な細工は、(露骨過ぎるので)あまりしないでほしいといわれた。 (ただ一色手方向の補正が大きくなると、大車輪・九連宝灯・緑一色などの出現頻度が高くなる...四暗刻も増える)
- 86 名前:デフォルトの名無しさん [2005/09/09(金) 00:49:19 ]
- おまえら、PS2の麻雀やろうぜ!2でも参考にしろ
- 87 名前:デフォルトの名無しさん [2005/09/09(金) 20:22:09 ]
- 白木、出て来い
- 88 名前:デフォルトの名無しさん mailto:sage [2005/09/09(金) 23:20:10 ]
- >>87
こんちわー、白木です。 lovelovelicca06.web.infoseek.co.jp/minoru05.jpg
- 89 名前:デフォルトの名無しさん [2005/10/31(月) 00:35:54 ]
- age
- 90 名前:名前は開発中のものです。 [2005/11/25(金) 19:01:36 ID:/aObainy]
-
- 91 名前:名前は開発中のものです。 mailto:sage [2005/11/25(金) 19:29:39 ID:ixk95QjQ]
- (´・ω・`)
- 92 名前:名前は開発中のものです。 [2006/06/16(金) 15:06:48 ID:gys/BJwI]
- age
- 93 名前:名前は開発中のものです。 [2006/06/22(木) 04:21:40 ID:2BUVy0Re]
- age
- 94 名前:名前は開発中のものです。 mailto:sage [2006/07/04(火) 12:32:40 ID:RtEqyIQY]
- AI同士を対戦させるプログラムを作ってみようかなあ。
し よ う 基本は、>>7のMJSimと同じ。 ・AI同士のみの対戦。 ・東風荘ルール。 ・東風荘のログを出す。 ・AIは、.netで作る。作るの楽だし、開発環境無料だし。 ・勝敗は、東風戦200回以上の合計得点で決める。 ・「勝敗」にほとんど関係のない(めったに現れない)ルールは無しにする(役満、チャンカンなど)。 MJSimは、AIに「普通の麻雀」をさせようとして作るのが難しくなっている気がする。 麻雀のルールを、AIが作りやすい形に変えてしまえばいいのではないか。 まあ、できるかどうかわからん。 1ヶ月たって音沙汰が無ければ頓挫したと思ってくれ。
- 95 名前:名前は開発中のものです。 mailto:sage [2006/08/05(土) 12:24:30 ID:huHp86V8]
- 1月経った訳だが
- 96 名前:名前は開発中のものです。 [2006/11/11(土) 10:51:40 ID:bfMsKF2A]
- 東風荘の代打プログラムを作って、100試合ほど打たせてみた。
安定Rが1100しかなかった(´・ω・`) 実装した機能は以下の通り。 ・普段は単純に聴牌一直線。具体的には、シャンテン数を落とさずに 受け入れが広くなるように切る。ドラおよびドラ付近は評価を高めに。 ・鳴きは役牌のみ。 ・残り山枚数が20枚以下になると、形式聴牌を取りにいく。 ・相手から先制リーチが入ると、現物→字牌→筋の順でベタオリ。
- 97 名前:名前は開発中のものです。 mailto:sage [2006/11/11(土) 11:45:38 ID:z2w53djY]
- ベタオリ機能外した方がよくねえか?
- 98 名前:96 [2006/11/11(土) 14:19:21 ID:bfMsKF2A]
- >>97
そうかなあ。 ベタオリ機能を実装してから、成績がだいぶ安定したから 必須機能だと思ってたけど・・・
- 99 名前:名前は開発中のものです。 mailto:sage [2006/11/11(土) 20:49:33 ID:GfQHFT1U]
- ベタオリする条件を先制リーチと別に、もういくつか設定してみたらどう?
たとえば残り山数が少なく、シャンテン数が高いとか 切れる牌が危険牌だらけとか上がれそうもなかったら、ベタオリ。 まだ、山数が十分あるとか、シャンテン数が低いとか、切れる牌の危険度が 低かったら続行するとか。
- 100 名前:96 [2006/11/13(月) 09:22:52 ID:duDFKbMP]
- >>96からさらに100試合ほど打たせてみた。
すると、その100試合の安定Rが1650で、 >>96の100試合と合わせた計200試合の安定Rが1450に。 まだまだ試合数が少ないから断言はできないけど、 今までは運が悪すぎたのかなあ。 とりあえずは旧上ランの入り口である、R1600を目指して がんばります(`・ω・´)
- 101 名前:名前は開発中のものです。 mailto:sage [2006/11/13(月) 19:32:23 ID:/l9lVeym]
- 勝ちが安定しないって、ようは運任せで、アルゴリズム関係なしなんでは?
- 102 名前:名前は開発中のものです。 mailto:sage [2006/11/13(月) 23:38:07 ID:BdVR9VSj]
- シャンテン数が高いときはベタオリにして、
それ以外のときは ゆるくオリるような打ち方がいいんではないかと。 つまり、現物、字牌、筋、 リーチ者が序盤に切った牌の周りなどを 安全そうな牌としといて、 安全そうな牌かつシャンテン数を落とさない牌を打つようにする。 さらに精密にやるなら安全度を点数化するといいかも。
- 103 名前:名前は開発中のものです。 mailto:sage [2006/11/14(火) 19:32:08 ID:MANy7Ws5]
- やっぱりベタオリは改善の余地があると思う。
勝ってるときはベタオリ、負けてるときは、続行とか。 あとは鳴きが役牌のみってところかな? チンイツとかホンイツとかトイトイとか、いくつかの役に対して、シャンテン数計算して、 いくつ以下ならその手を目指してチーポンを積極的に行うとかはどうだろうか。
- 104 名前:96 [2006/11/19(日) 22:34:00 ID:t1T5Qf2N]
- みなさんレスありがとうございます。
平日は忙しい上に、PCがつかえない環境にいるため、 返事ができなくてすみません。 ところで、他にも東風で代打プログラムを 動かしてみたいという方はいらっしゃいませんか? もし、代打プログラムを作ってみたいが、とつげき東北さんが配布されている MJexeIO.dllを使ってもスキルが足らずに作成できない・めんどくさいという方が おられましたら、僕が作成したプログラムでよければ公開させていただきます。 今のところ搭載している機能・特徴は以下のとおりです。 1.とつげき東北さんが配布されているMJexeIO.dllに皮をかぶせて使いやすくしています。 具体的には、 ○画面から情報を取得する関数を自作の関数の中で適切によびだしているため、 プログラマ自身が画面から情報を取得する関数を呼び出すタイミングに頭を悩ませる必要はありません。 画面から取得された情報は、自作の構造体(手牌構造体やプレイヤー構造体など)に格納されます。 ○自分の順番が回って来た時にどの牌を切るかを返す関数、チーやポンをするかどうか尋ねられた時に 鳴くかどうかを決定する関数のみを実装すれば、自分の思い通りに動く代打プログラムが作れます。 2.一度起動すれば、プログラムを終了するか、東風が回線落ちするまで、延々と打ち続ける機能を搭載しています。 3.自分の手牌のシャンテンを計算する機能、場に見えている牌の枚数を数える機能、有効牌を計算する機能 (ここでいう有効牌とは、自分の手牌のシャンテン数を下げる牌を意味します)、4人の捨て牌を時間順に並べる機能 (この機能により、MJexeIO.dllのSimulateOrder関数に付きまとっていた、切られた牌の順序決定不可能性の問題 を回避できます)など、代打プログラムを作成する上で、必要と思われる機能を搭載しています。 (時間があれば、自分の手牌の役を認識する機能を搭載する予定です。) 4.僕自身はプログラミングを趣味としているただの学生ですので、スキル的な問題により、ソースコードは汚いですし、 上記機能の処理速度も速くはありません。デバッグは十分に繰り返したつもりですが、バグがないことを保障できません。
- 105 名前:名前は開発中のものです。 mailto:sage [2006/11/20(月) 03:34:26 ID:flZCi+aK]
- >>104
興味あり。公開してほしいな。 まあ、俺は代打プログラムを作れるような頭は持ち合わせていないが。
- 106 名前:名前は開発中のものです。 mailto:sage [2006/11/20(月) 21:10:36 ID:8qCQQBvr]
- うちは、代打ちじゃなくて全部オリジナルで作ってるんで、
プログラム自体は必要ないけど、アルゴリズムとか、 どんなことをやってるかソース中にコメントとかあれば見てみたい。 作ってるのはエロゲなんで、強い思考ルーチンはいらないんだけど。
- 107 名前:名前は開発中のものです。 mailto:age [2006/11/24(金) 22:26:28 ID:WoA2EPYX]
- しかし、こんなにいるんや。
こんなこと考える人! やっぱ、パラメタ、重みつけ。 あと、ひたすら統計になるんかなー?
- 108 名前:名前は開発中のものです。 mailto:sage [2006/12/12(火) 23:21:53 ID:svbHb3hn]
- 統計取るなら聴牌思考の指向性についても考えたほうがいいんじゃないかな
具体的には棒聴即リールーチンと期待値計算して遠回りしても高い手を和了るルーチンのどちらが強いか ってのを東風かなにかで実戦に投入しながら統計をとるってことで でも、麻雀の統計として具体的に何局ほどサンプルをとればいいんだろうか… 20万局ぐらい?
|

|