5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

※麻雀ロジック研究会※

1 :1:05/01/10 13:48:12
麻雀のロジックについて研究しませんか?

麻雀ゲームなんかで強いCPUキャラクターとやると
どうしてもプログラムの方で積み込んでいるとしか思えません。
人間の思考に近づくロジックを話し合いませんか?

2 :デフォルトの名無しさん:05/01/10 13:52:52
成人記念2ゲット

3 :デフォルトの名無しさん:05/01/10 15:26:14
>>1
アナタの考えたロジックを叩き台にして進めたらどうだろう。
ということで、ネタ振ってちょ。

4 :デフォルトの名無しさん:05/01/10 15:56:13
よーし、俺がネタヲ振ってやるぜ
ファジイ推論でルールヲつくって
すべての牌について、それを切ったときの評価をだして
評価の高かった牌を切る

どうよ

5 :1:05/01/10 17:30:08
今のところ私が考えているのは、
キャラ毎に、ピンフ好き、タンヤオ好きとかにわけるしかないかなぁ
と、考えていますが、それだと上がれないですよね。
つまり強いCPUにはなり得なくなってしまいます。
ただ、前もって積み込みとかにしちゃうと、聴牌状態で
何巡目にリーチを書けて自摸る、とかいう設定になってしまいますし。。。
味気ないキャラクターになってしまいますよね。

ん〜難しいw

6 :デフォルトの名無しさん:05/01/10 18:14:53
まずは、上がりまでの起こりうる未来を全て列挙して、
その中から一番良いパスを選ぶことを考える。

多分、現在の計算機の能力ではできないので、
1)起きえないであろう選択肢をカットする
・ドラが2枚そろっていたら捨てない。
・終盤で、捨牌に出ていない牌は捨てない
など
2)最後まで読み切れないので、途中の状態で
得点を予測して、そのパスの得点とする。

を考える。

>>4 は 2) の一つの方法

1)でキャラクターの個性を出せるけど、最初は
最強プレーヤーを目指して作成して、機能制限
や評価項目の重み付けの調整で個性を作って
いった方が作りやすい

7 :デフォルトの名無しさん:05/01/10 18:27:28
http://pc2.2ch.net/test/read.cgi/tech/1048299493/
こんなのがあったな…

8 :デフォルトの名無しさん:05/01/10 18:54:15
>>7
その前の年にもあった。

1年に1度は麻雀ネタのスレが立つんだよ。


9 :デフォルトの名無しさん:05/01/10 19:24:26
>>6
>まずは、上がりまでの起こりうる未来を全て列挙して、
>その中から一番良いパスを選ぶことを考える。

「良さ」を計る関数の定義が出来ればほぼ終わったようなものな希ガス
関数を考えるに当たって
- 自分の上がりへの近づきとその点数の期待値
- 他家の手を進める、または振り込む期待値
くらいなのかな。

「上がりへの近づき」や「手を進める」というのをどう数値化するかが難しそう。

10 :1:05/01/10 21:02:21
>まずは、上がりまでの起こりうる未来を全て列挙して、
>その中から一番良いパスを選ぶことを考える。

手牌からその可能性を計算して、
ツモるたびにその可能性を狭めて行くやりかたですかね?
ある程度の前例をデータとして保持し、その型にあったやり方で
進行して行く訳ですか。

人間にも経験というものがありますし、これはいいですね。

記憶として対戦相手の思考もコピーしていくような、
ロジックもいれると面白そうですね。
役が成立するパターンの配牌を記憶し、
自分の配牌をそれにあてはめて、前例だとこの役が成立する予定だから
それを必死に集めるとか。

11 :デフォルトの名無しさん:05/01/10 22:28:43
振り込むリスクも考えないといかんなあ…
例えば相手の捨て牌から予想するような。

12 :デフォルトの名無しさん:05/01/12 01:01:49
>>1
ロジックを実装できるような
プログラムを用意するべきだと思います

13 :デフォルトの名無しさん:05/01/12 08:14:12
もうある

14 :1:05/01/12 11:09:47
>>12

プログラム自体はあります。
役判定はライブラリとか使ってますが・・・

ただ、決まった打ち方しか出来ないんですよね。
ピンフを中心に構成していくとか、
アンコばかり集めるとか・・・

さらにCPUを強化するには積み込むしかないし・・・

その辺を今後、研究していければいいと思っています。
将棋とか、囲碁と違って運もかなりゲーム要素に影響するので
なかなか難しいところではあります。

15 :1:05/01/17 10:59:28
牌に積み込む計算は
安全牌を計算しないといけないですね。
実装すると、モッサリしそうですが、
搭載したいきのうです。

16 :デフォルトの名無しさん:05/01/18 01:45:26
このスレの住人が、ロジックを適当な言語で実装したモノを持ち寄って
対戦させられるような仕組みがあったら面白そう。
>12の言ってるのもそういうことじゃないのかな。

17 :1:05/01/21 15:01:21
面白いかもしれないけど、みんな暇じゃないですよね。
私も、現在、納期前でいそがすぃし


18 :デフォルトの名無しさん: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:05/01/31 19:14:11
ごめんよ。仕事の合間にふと思ってさ。
軽はずみにスレ立てちゃいかんねv(>_<)v

21 :デフォルトの名無しさん:05/02/11 04:36:53
麻雀だと将棋スレみたく、最強を目指すと言うわけにはいかないのかな。
確率的に最善の手探しても、結局は運だろうから。

22 :デフォルトの名無しさん:05/02/11 20:48:40
将棋におけるCSAプロトコルみたいな、ある程度標準となるネットワーク対戦プ
ロトコルみたいのって麻雀ではないの?


23 :デフォルトの名無しさん:05/02/14 19:16:40
誰か、和了チェック関数見せてくれませんか?
漏れの使いかたが悪いのか、
http://www.interq.or.jp/snake/totugeki/mjcom_p0.htm
これを実装するとスタックオーバーフローになってしまいまつ。

24 :デフォルトの名無しさん:05/02/15 02:36:37
ループ終わらずにネストし続けてしまってるんだよね。

ぱっと見ありそうなのは先頭の
>for(;!tehai[i];i++)if(i>=43){return;} //上がっている場合ここが実行される
で i=0とかしてたり?


25 :デフォルトの名無しさん:05/02/15 02:41:42
i=0しても下スルーされるから関係無いか。

26 :デフォルトの名無しさん:05/02/15 02:58:24
すまん、やっぱりあるね。
自分の脳内トレーサじゃ >>24しか思い浮かばないや・・・

27 :デフォルトの名無しさん:05/02/15 16:27:30
>>24
あまり変数はいじってないんですけどね。
return の前に悪いやりかただろうけど大域変数のflagを使ってるだけで・・・
この人麻雀研究で有名だし、やっぱり漏れが悪いんだろうなあ。

28 :デフォルトの名無しさん:05/02/15 17:00:06
その関数は悪くないと思うよ。
どんな使いかたしてるの?
見てあげるからソース貼ってみそ。

29 :デフォルトの名無しさん:05/02/15 17:56:17
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/212.txt
クソコーディングすまそ。

最初、イーシャンテンでテンパイまでの受け入れ枚数を数えるプログラムを
作ってみようと思ったんですけど(鳴き、チートイ、国士はまだ)
どうもagari_checkのところで何かおかしなことになってるっぽいんです。

30 :デフォルトの名無しさん:05/02/15 18:19:05
そのままコンパイルして実行してみたけど、問題無かったよ。
この状態でスタックオーバーフローになるの?

31 :デフォルトの名無しさん:05/02/15 18:43:48
スタックオーバーフローは、恐らくなんですが・・・
VC++6のデバックモードだと、きちんと表示されるんですが
リリースモードと、BCCでは、最後のprintfが表示されないんです。
何が原因なのかなあ。

32 :28: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 :デフォルトの名無しさん:05/02/15 19:05:53
>>32
おお、最後きちんと表示されるようになりました。
まだおかしなところがあるかもしれませんが、とりあえず前進しました。
ありがとうございますm(__)m




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:47
フリーの牌画像発見。ちょっと笑えた。
http://www.geocities.jp/aposhine/tiles.html


39 :デフォルトの名無しさん:05/02/17 18:14:48
ここにもあった。
http://www.mahjong.to/sozai/readme.htm


40 :デフォルトの名無しさん:05/02/17 18:49:48
1ソーがポイントだなw

41 :デフォルトの名無しさん:05/02/18 09:30:23
>>16
対戦させられるような仕組みは、
>>7の「MJSim」、>>19の「まうじゃん」というところか・・・
で、作っている人いるの?


42 :デフォルトの名無しさん:05/02/19 17:46:05
あがり判定とか役判定ってどうやんの?
それだけで結構難しくない?

43 :デフォルトの名無しさん:05/02/19 18:07:36
少し上にあるだろ

44 :デフォルトの名無しさん:05/02/21 00:25:39
麻雀のルールって、増築に増築を重ねた「九龍城」みたいなものだからな・・・

実際にさまざまなルールを統合してプログラムを作成しようとすると、
あちらこちらに矛盾点が出てくるんだよね。

実際にゲームをしている時には殆ど発生しない
レアなケースでのみ起こる矛盾点もプログラムにする以上、
ちゃんと解決しなくちゃいけないし。

例えば、「完全先付け」とかさ・・・

あれ考えた奴、脳みそのネジが5,6本、抜け落ちているんじゃないのか?


45 :デフォルトの名無しさん:05/02/21 00:56:34
>>44
C++の悪口はやめてください

46 :デフォルトの名無しさん:05/03/01 14:16:30
麻雀に関してのプログラムの書いてある本
何でもいいので教えてください

47 :デフォルトの名無しさん:05/03/06 21:02:00
age

48 :デフォルトの名無しさん:05/03/06 23:45:51
んとね、テクノポリスに書いてあった。
探すのめんどいから何号かは知らん。

49 :デフォルトの名無しさん:05/03/07 00:13:54
>>46
ゲームプログラミング
『遊びのレシピ』

ttp://www.cmagazine.jp/books/recipe/

50 :デフォルトの名無しさん:05/03/19 18:18:59
>>1
そもそも上がり、いやテンパイにまで持って行けるの?




と言ってみるテスト

51 :デフォルトの名無しさん:05/03/19 18:21:49
>>44
>例えば、「完全先付け」とかさ・・・

>あれ考えた奴、脳みそのネジが5,6本、抜け落ちているんじゃないのか?

タコ麻雀対策だろ。
麻雀格闘倶楽部やってるとたまに後付で勝つウザイ香具師が多い

52 :44:05/03/20 20:36:31
>>51
いや、俺が思うに、多分あのルールは
筋者の方々が素人さん相手に勝負をする時に
散々難癖を付けて、カネを搾り取るためのものだと思う。

その理由は・・・

1.ルールの出自が関西であり、今も関西でしか行われていない

2.「完全先付け」には様々なパターンと、それに対する様々な解釈があり、
それら全てをゲームの前に確認しておくのは不可能

3.その後のゲーム中で、事前に確認が取れなかったケースが
発生した場合、間違いなく腕力の強い奴の主張がまかりとおる

まぁ、そんな深読みをしなくても、実際にプログラミングをしてみれば
すぐ分かる。
「完全先付け」がどれほどトチ狂ったルールであるかが・・・


13 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)