麻雀のロジックについて研究しませんか?
麻雀ゲームなんかで強いCPUキャラクターとやると
どうしてもプログラムの方で積み込んでいるとしか思えません。
人間の思考に近づくロジックを話し合いませんか?
※麻雀ロジック研究会※
■ このスレッドは過去ログ倉庫に格納されています
11
NGNGNGNG
成人記念2ゲット
NGNG
NGNG
よーし、俺がネタヲ振ってやるぜ
ファジイ推論でルールヲつくって
すべての牌について、それを切ったときの評価をだして
評価の高かった牌を切る
どうよ
ファジイ推論でルールヲつくって
すべての牌について、それを切ったときの評価をだして
評価の高かった牌を切る
どうよ
51
NGNG 今のところ私が考えているのは、
キャラ毎に、ピンフ好き、タンヤオ好きとかにわけるしかないかなぁ
と、考えていますが、それだと上がれないですよね。
つまり強いCPUにはなり得なくなってしまいます。
ただ、前もって積み込みとかにしちゃうと、聴牌状態で
何巡目にリーチを書けて自摸る、とかいう設定になってしまいますし。。。
味気ないキャラクターになってしまいますよね。
ん〜難しいw
キャラ毎に、ピンフ好き、タンヤオ好きとかにわけるしかないかなぁ
と、考えていますが、それだと上がれないですよね。
つまり強いCPUにはなり得なくなってしまいます。
ただ、前もって積み込みとかにしちゃうと、聴牌状態で
何巡目にリーチを書けて自摸る、とかいう設定になってしまいますし。。。
味気ないキャラクターになってしまいますよね。
ん〜難しいw
6デフォルトの名無しさん
NGNG まずは、上がりまでの起こりうる未来を全て列挙して、
その中から一番良いパスを選ぶことを考える。
多分、現在の計算機の能力ではできないので、
1)起きえないであろう選択肢をカットする
・ドラが2枚そろっていたら捨てない。
・終盤で、捨牌に出ていない牌は捨てない
など
2)最後まで読み切れないので、途中の状態で
得点を予測して、そのパスの得点とする。
を考える。
>>4 は 2) の一つの方法
1)でキャラクターの個性を出せるけど、最初は
最強プレーヤーを目指して作成して、機能制限
や評価項目の重み付けの調整で個性を作って
いった方が作りやすい
その中から一番良いパスを選ぶことを考える。
多分、現在の計算機の能力ではできないので、
1)起きえないであろう選択肢をカットする
・ドラが2枚そろっていたら捨てない。
・終盤で、捨牌に出ていない牌は捨てない
など
2)最後まで読み切れないので、途中の状態で
得点を予測して、そのパスの得点とする。
を考える。
>>4 は 2) の一つの方法
1)でキャラクターの個性を出せるけど、最初は
最強プレーヤーを目指して作成して、機能制限
や評価項目の重み付けの調整で個性を作って
いった方が作りやすい
NGNG
NGNG
NGNG
>>6
>まずは、上がりまでの起こりうる未来を全て列挙して、
>その中から一番良いパスを選ぶことを考える。
「良さ」を計る関数の定義が出来ればほぼ終わったようなものな希ガス
関数を考えるに当たって
- 自分の上がりへの近づきとその点数の期待値
- 他家の手を進める、または振り込む期待値
くらいなのかな。
「上がりへの近づき」や「手を進める」というのをどう数値化するかが難しそう。
>まずは、上がりまでの起こりうる未来を全て列挙して、
>その中から一番良いパスを選ぶことを考える。
「良さ」を計る関数の定義が出来ればほぼ終わったようなものな希ガス
関数を考えるに当たって
- 自分の上がりへの近づきとその点数の期待値
- 他家の手を進める、または振り込む期待値
くらいなのかな。
「上がりへの近づき」や「手を進める」というのをどう数値化するかが難しそう。
101
NGNG >まずは、上がりまでの起こりうる未来を全て列挙して、
>その中から一番良いパスを選ぶことを考える。
手牌からその可能性を計算して、
ツモるたびにその可能性を狭めて行くやりかたですかね?
ある程度の前例をデータとして保持し、その型にあったやり方で
進行して行く訳ですか。
人間にも経験というものがありますし、これはいいですね。
記憶として対戦相手の思考もコピーしていくような、
ロジックもいれると面白そうですね。
役が成立するパターンの配牌を記憶し、
自分の配牌をそれにあてはめて、前例だとこの役が成立する予定だから
それを必死に集めるとか。
>その中から一番良いパスを選ぶことを考える。
手牌からその可能性を計算して、
ツモるたびにその可能性を狭めて行くやりかたですかね?
ある程度の前例をデータとして保持し、その型にあったやり方で
進行して行く訳ですか。
人間にも経験というものがありますし、これはいいですね。
記憶として対戦相手の思考もコピーしていくような、
ロジックもいれると面白そうですね。
役が成立するパターンの配牌を記憶し、
自分の配牌をそれにあてはめて、前例だとこの役が成立する予定だから
それを必死に集めるとか。
NGNG
振り込むリスクも考えないといかんなあ…
例えば相手の捨て牌から予想するような。
例えば相手の捨て牌から予想するような。
NGNG
NGNG
もうある
141
NGNG >>12
プログラム自体はあります。
役判定はライブラリとか使ってますが・・・
ただ、決まった打ち方しか出来ないんですよね。
ピンフを中心に構成していくとか、
アンコばかり集めるとか・・・
さらにCPUを強化するには積み込むしかないし・・・
その辺を今後、研究していければいいと思っています。
将棋とか、囲碁と違って運もかなりゲーム要素に影響するので
なかなか難しいところではあります。
プログラム自体はあります。
役判定はライブラリとか使ってますが・・・
ただ、決まった打ち方しか出来ないんですよね。
ピンフを中心に構成していくとか、
アンコばかり集めるとか・・・
さらにCPUを強化するには積み込むしかないし・・・
その辺を今後、研究していければいいと思っています。
将棋とか、囲碁と違って運もかなりゲーム要素に影響するので
なかなか難しいところではあります。
151
05/01/17 10:59:28 牌に積み込む計算は
安全牌を計算しないといけないですね。
実装すると、モッサリしそうですが、
搭載したいきのうです。
安全牌を計算しないといけないですね。
実装すると、モッサリしそうですが、
搭載したいきのうです。
05/01/18 01:45:26
このスレの住人が、ロジックを適当な言語で実装したモノを持ち寄って
対戦させられるような仕組みがあったら面白そう。
>12の言ってるのもそういうことじゃないのかな。
対戦させられるような仕組みがあったら面白そう。
>12の言ってるのもそういうことじゃないのかな。
171
05/01/21 15:01:21 面白いかもしれないけど、みんな暇じゃないですよね。
私も、現在、納期前でいそがすぃし
私も、現在、納期前でいそがすぃし
05/01/21 20:10:05
19デフォルトの名無しさん
05/01/25 23:54:34 こんなの見つけた
ttp://members.jcom.home.ne.jp/hennano/maujong/java/
ttp://members.jcom.home.ne.jp/hennano/maujong/java/
201
05/01/31 19:14:11 ごめんよ。仕事の合間にふと思ってさ。
軽はずみにスレ立てちゃいかんねv(>_<)v
軽はずみにスレ立てちゃいかんねv(>_<)v
05/02/11 04:36:53
麻雀だと将棋スレみたく、最強を目指すと言うわけにはいかないのかな。
確率的に最善の手探しても、結局は運だろうから。
確率的に最善の手探しても、結局は運だろうから。
05/02/11 20:48:40
将棋におけるCSAプロトコルみたいな、ある程度標準となるネットワーク対戦プ
ロトコルみたいのって麻雀ではないの?
ロトコルみたいのって麻雀ではないの?
23デフォルトの名無しさん
05/02/14 19:16:40 誰か、和了チェック関数見せてくれませんか?
漏れの使いかたが悪いのか、
http://www.interq.or.jp/snake/totugeki/mjcom_p0.htm
これを実装するとスタックオーバーフローになってしまいまつ。
漏れの使いかたが悪いのか、
http://www.interq.or.jp/snake/totugeki/mjcom_p0.htm
これを実装するとスタックオーバーフローになってしまいまつ。
05/02/15 02:36:37
ループ終わらずにネストし続けてしまってるんだよね。
ぱっと見ありそうなのは先頭の
>for(;!tehai[i];i++)if(i>=43){return;} //上がっている場合ここが実行される
で i=0とかしてたり?
ぱっと見ありそうなのは先頭の
>for(;!tehai[i];i++)if(i>=43){return;} //上がっている場合ここが実行される
で i=0とかしてたり?
05/02/15 02:41:42
i=0しても下スルーされるから関係無いか。
05/02/15 02:58:24
すまん、やっぱりあるね。
自分の脳内トレーサじゃ >>24しか思い浮かばないや・・・
自分の脳内トレーサじゃ >>24しか思い浮かばないや・・・
05/02/15 16:27:30
05/02/15 17:00:06
その関数は悪くないと思うよ。
どんな使いかたしてるの?
見てあげるからソース貼ってみそ。
どんな使いかたしてるの?
見てあげるからソース貼ってみそ。
05/02/15 17:56:17
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/212.txt
クソコーディングすまそ。
最初、イーシャンテンでテンパイまでの受け入れ枚数を数えるプログラムを
作ってみようと思ったんですけど(鳴き、チートイ、国士はまだ)
どうもagari_checkのところで何かおかしなことになってるっぽいんです。
クソコーディングすまそ。
最初、イーシャンテンでテンパイまでの受け入れ枚数を数えるプログラムを
作ってみようと思ったんですけど(鳴き、チートイ、国士はまだ)
どうもagari_checkのところで何かおかしなことになってるっぽいんです。
05/02/15 18:19:05
そのままコンパイルして実行してみたけど、問題無かったよ。
この状態でスタックオーバーフローになるの?
この状態でスタックオーバーフローになるの?
05/02/15 18:43:48
スタックオーバーフローは、恐らくなんですが・・・
VC++6のデバックモードだと、きちんと表示されるんですが
リリースモードと、BCCでは、最後のprintfが表示されないんです。
何が原因なのかなあ。
VC++6のデバックモードだと、きちんと表示されるんですが
リリースモードと、BCCでは、最後のprintfが表示されないんです。
何が原因なのかなあ。
3228
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
で、うまくいくかも。
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
で、うまくいくかも。
05/02/15 19:05:53
34デフォルトの名無しさん
05/02/15 21:36:58 http://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:4705/02/17 18:14:48
05/02/17 18:49:48
1ソーがポイントだなw
05/02/18 09:30:23
05/02/19 17:46:05
あがり判定とか役判定ってどうやんの?
それだけで結構難しくない?
それだけで結構難しくない?
05/02/19 18:07:36
少し上にあるだろ
05/02/21 00:25:39
麻雀のルールって、増築に増築を重ねた「九龍城」みたいなものだからな・・・
実際にさまざまなルールを統合してプログラムを作成しようとすると、
あちらこちらに矛盾点が出てくるんだよね。
実際にゲームをしている時には殆ど発生しない
レアなケースでのみ起こる矛盾点もプログラムにする以上、
ちゃんと解決しなくちゃいけないし。
例えば、「完全先付け」とかさ・・・
あれ考えた奴、脳みそのネジが5,6本、抜け落ちているんじゃないのか?
実際にさまざまなルールを統合してプログラムを作成しようとすると、
あちらこちらに矛盾点が出てくるんだよね。
実際にゲームをしている時には殆ど発生しない
レアなケースでのみ起こる矛盾点もプログラムにする以上、
ちゃんと解決しなくちゃいけないし。
例えば、「完全先付け」とかさ・・・
あれ考えた奴、脳みそのネジが5,6本、抜け落ちているんじゃないのか?
05/02/21 00:56:34
>>44
C++の悪口はやめてください
C++の悪口はやめてください
46デフォルトの名無しさん
05/03/01 14:16:30 麻雀に関してのプログラムの書いてある本
何でもいいので教えてください
何でもいいので教えてください
47デフォルトの名無しさん
05/03/06 21:02:00 age
05/03/06 23:45:51
んとね、テクノポリスに書いてあった。
探すのめんどいから何号かは知らん。
探すのめんどいから何号かは知らん。
■ このスレッドは過去ログ倉庫に格納されています
