[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 2chのread.cgiへ]
Update time : 02/05 03:38 / Filesize : 153 KB / Number-of Response : 679
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C言語でトランプゲームを作りたい



1 名前:デフォルトの名無しさん [2007/09/16(日) 06:46:13 ]
ばば抜き、大貧民、いろいろあるけどこういうのってほとんどがJavaとかだよね。
CUIでもいいからみんなで作ろう

513 名前:デフォルトの名無しさん mailto:sage [2007/10/08(月) 13:07:10 ]
今度こそ誰もいないな

514 名前:デフォルトの名無しさん mailto:sage [2007/10/08(月) 13:10:33 ]
うむ

515 名前:127 mailto:sage [2007/10/08(月) 20:52:17 ]
誰もいないようなのでしばらく独り言をば

まずケースに入ったトランプを用意しよう。
ケースの中にはトランプが順番に入っている。
A,2,3,…Q,Kのランク順でスペード,ハート,ダイヤ,クラブのスート順だ。
誤解のないように例を出すと,スペードのKの次はハートのAになる。
またクラブのKの次にはJOKERが二枚入っている。
この計54枚のカードを使ってゲームをするわけだ。

516 名前:デフォルトの名無しさん mailto:sage [2007/10/08(月) 20:55:29 ]
ほほう、それで

517 名前:デフォルトの名無しさん mailto:sage [2007/10/08(月) 21:34:11 ]
構造体で作ったらあと楽じゃない?

518 名前:127 mailto:sage [2007/10/08(月) 21:40:59 ]
私以外まだ誰もいないようだが話を続けよう。

さて,大富豪というゲームを君たちは知っているかな?
1970年代に日本のトーキョーで生まれたとされ,かつては大貧民と呼ばれたゲームだ。
プレイヤーは複数で,ゲームの最初に彼らに等しくカードを全て配る。
等しくと言ってもプレイヤーの数によって端数が出る。
端数の処理の方法はいろいろあるが,今回は端数を気にせず最後まで順に配り終えることにしよう。

おっと,言い忘れたが,今回シャッフルはしない。

519 名前:デフォルトの名無しさん mailto:sage [2007/10/08(月) 21:53:09 ]
まだ君以外誰一人とここにはいないので、
そのまま話を続けましょう

520 名前:127 mailto:sage [2007/10/08(月) 22:43:16 ]
各プレイヤーは自分に配られたカードの中から
役―1枚,2枚以上の同位札,もしくは3枚以上の同一スートによるシーケンス(※注:連番)―を作り,順次場に出していく。
持っているカードが無くなれば,あがりとなってプレイの輪から抜けることができる。
残りのプレイヤーが一人となった時点で1ゲーム終了となり,あがりとなった順に順位が決定する。
最後に残ったプレイヤーは最下位だ。

場とは役を出す場所であり通常1ゲームに複数の場が作られるが同時に複数の場は存在できない。
場が破棄されることを場が流れると言い,場が流れたあとは新しい場が1つ作成される。
ゲーム開始時に最初の場が1つ作成される。
場に最初に役を出すプレイヤーを親と呼び,その場に出すことの出来る役の種類を決定できる。
最初の場の親を決定する方法は,これも様々な方法があるが,今回はダイヤの3を配られたプレイヤーとする。

カードは3が最も弱く,続いて4,5,…,Q,K,ときてA,2の順に強くなる。
そしてJOKERは2より強く,またワイルドカードとしても使用できる。
カードの強さに遵って役の強さが決まり,場に出す役は場の役―最後に場に出された役―より強くなければならない。
出せる役がない場合はそのプレイヤーはパスとなり次のプレイヤーの番となる。

場のプレイヤー―場の役を出したプレイヤー―以外のプレイヤーが全てパスとなったとき,
その場は流れ,そのプレイヤーが次の場の親となる。
場のプレイヤーがあがりとなり,かつ残りのプレイヤーが全てパスとなったとき,
その場は流れ,そのプレイヤーの前に場のプレイヤーであってまだあがりでないプレイヤーが次の場の親となる。

基本的なルールはこんなところだ。
何か質問は?
では次回。

521 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 01:24:26 ]
革命ルールはござらんのか!
CPUの人間的思考の実装方法はまだか!



522 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 01:12:11 ]
基本戦術

既に場に出ているカードを覚える

Q以上のペアは強い
2はペアで使うよりも1枚ずつで2回使った方が有利
 崩すときはなるべく強いペアをくずす
特に、弱いペアは絶対崩してはいけない

シークエンスは、原則として弱い(10以下)ものの方が使いやすい
4枚以上のシークエンスは強い
3枚組とシークエンスが複合している場合は、シークエンス+ペアが鉄則
強いもので、特にペアと複合している場合(例:K、A,A,2)は、むしろばらした方が強い

シークエンスとペアが複合している場合は、状況に応じて、使い分ける
ペアが一組(例:6,7,7,8)ならば、シークエンス優先
ペアが二組(例:6,6,7,8,8)ならば、微妙
ペア3組(例:6,6,7,7,8,8)ならば、ペア優先

523 名前:127 mailto:sage [2007/10/13(土) 18:56:32 ]
ここにはもう誰もいないのだ

524 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 18:56:53 ]
阻止

525 名前:127 mailto:sage [2007/10/13(土) 22:52:16 ]
そして誰もいなくなった

526 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 22:52:48 ]
阻止

527 名前:127 mailto:sage [2007/10/13(土) 23:00:25 ]
プログラマーには精神病を患う者が多いと言われるが
その病状の一つに自分が誰かに監視されているといった妄想がある

そうここには
誰もいない
誰もいない
誰もいない

528 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 23:09:56 ]
ものすごく寒いことになってるね

529 名前:127 mailto:sage [2007/10/13(土) 23:45:04 ]
自分の内には誰もいない
従って自分の外にも誰もいない

誰かがいるという幻想こそが
不幸の根源なのだ

530 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 23:46:18 ]
みょん

531 名前:デフォルトの名無しさん mailto:sage [2007/10/14(日) 00:26:02 ]
リアルタイムで中二病患者を見たのは久しぶりだわ



532 名前:127 mailto:sage [2007/10/14(日) 09:51:02 ]
このスレに誰もいませんよ

533 名前:127 mailto:sage [2007/10/14(日) 22:38:02 ]
誰もいないことを確信した

534 名前:デフォルトの名無しさん mailto:sage [2007/10/14(日) 22:55:39 ]
これが噂の、かまってちゃんか

535 名前:127 mailto:sage [2007/10/14(日) 23:08:35 ]
誰もいないということを疑う余地はない

536 名前:127 mailto:sage [2007/10/14(日) 23:22:38 ]
誰も居なかった

537 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 12:56:27 ]
そんなことより、大富豪作りやがれ

538 名前:127 mailto:sage [2007/10/15(月) 19:47:08 ]
何故誰もいないのか
実は疑問がないわけではない

539 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 01:33:22 ]
ほほう、それで

540 名前:127 mailto:sage [2007/10/16(火) 03:00:00 ]
さて誰もいなくなったところでそろそろ本編をば

最初はシンプルに行こう。
ややこしいことは無しだ。
プレイヤーの数は5人とし,全て同じAIを使用する。
カードは1デッキとジョーカー2枚の計54枚とし,毎回ゲームのはじめにシャッフルする。
初回は最初に登録されたプレイヤーからディールする。
そしてダイヤの3を持ったプレイヤーを最初の場の親としてゲームを開始する。
初回以降は前回最下位のプレイヤーの次のプレイヤーからディールする。
そして前回最下位のプレイヤーを最初の場の親としてゲームを開始する。
役はシーケンスが3から5枚,同位札が2から5枚,そして1枚札,とする。
AIが場の親のとき,シーケンス,同位札,1枚札,の順に,枚数のより多い役のうち,弱い役から出していく。
AIが場の親でないとき,場の役と同種でより強く,かつ手持ちのカードで作れる最も弱い役から出していく。
またジョーカーをワイルドカードとして使用可能なときは使用する。
同様にジョーカーを同位札,または一枚札として使用可能なときは使用する。

541 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 15:47:13 ]
最初でシンプルに行くなら、
・人数は2人でジョーカーは無しで52枚
・始める人も固定、順番も同じ
・カードのシャッフルなんてしない
辺りが適切では無いか?

流れをまず作って、他は後から付け加えると楽ジャマイカ?



542 名前:127 mailto:sage [2007/10/16(火) 18:11:36 ]
仮に誰かがいたとしても
誰であるかも分からないのに
誰かがいるという認識が間違いでないと
どうして言えよう

543 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 19:11:11 ]
その微妙なコテハンはなんだい?

544 名前:127 mailto:sage [2007/10/16(火) 20:35:00 ]
ここで面白いのは自己と他者の区別は
(厳密にはそうではないが実用上)
自己の認識に委ねられているということだ

すなわちそれが自分の書いたものであるという記憶によってのみ
自己の他者との境界を認識しうるのである

加えてそれが自分の書いたものであるという証明が自助努力の範囲内において不可能であるが故に
誰もその存在を主張する以上のことはできず
したがってここには誰もいないという認識を誰も否定することは出来ないのである


 「匿名非同期コミュニケーションの真実(非売)」より引用

545 名前:127 mailto:sage [2007/10/16(火) 20:39:27 ]
じゃあ俺も

546 名前:127 mailto:sage [2007/10/17(水) 21:12:19 ]
そうこうしているうちに
本当に誰もいなくなってしまった

547 名前:デフォルトの名無しさん [2007/10/18(木) 02:56:09 ]
文字列に強さを持たせるのがわkらん

548 名前:127 mailto:sage [2007/10/18(木) 03:04:03 ]
さてそろそろ続きをば

シンプルという点に疑問の余地ありとの意見だが,
たしかに上記のルールでは各ゲームごとの独立性が不十分であり,
出発点とするには不適切かもしれない。
そこで,ディールの開始プレイヤーと最初の場の親に関するルールについて検証してみよう。

まず以下のことについて確認しておく。
全てのプレイヤーが同一のアルゴリズムに従ってプレイするとき,
その結果は各プレイヤーの持ち札と最初の場の親によって一意に決定される。
ここで,各プレイヤーの持ち札と最初の場の親が完全にランダムに決定されるとき,
任意のプレイヤーが任意のランクになる確率は等しくなる。

549 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 03:07:49 ]
こんな大袈裟に気持ち悪いレスで熱弁してるくらいだから、さぞ素晴らしいものを作ってくれるんだろうな

550 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 03:21:54 ]
口だけ野郎の典型的パターンに何を期待してるんだよ

551 名前:127 mailto:sage [2007/10/18(木) 04:11:40 ]
私は私が常に不真面目であることを知っている
故に私は私の言葉を全く信用していない

今回は,ゲーム回数を一万回とし,各ゲームでの各プレイヤーのランクを記録した。
プレイヤーをTestA,TestB,TestC,TestD,TestEの順に登録した。
ランクは0から4までの値であり,値のより大きいランクを上位とする。

1.
各ゲームのディールの開始プレイヤーをローテーション制に
各ゲームの最初の場の親をダイヤの3を持つプレイヤーにした場合

結果を以下に示す。
行を各ゲームのランク,列をそのゲームの次のランクとし,該当するゲームの回数を計測した。
また各ランクとなったゲームの回数を計測し,これを列Totalに示す。
括弧内の数値は各行の各計測値を各行のTotalの値で割った値である。
これは現在のランクが決定しているとき次回のランクへ遷移する統計的確率を表す。

********************** Players Record (PlayCount=10000) ***********************
___________________________ Player TestA Record ___________________________

(省略されました・・全てを読むことはできません)

___________________________ Player TestE Record ___________________________
    [0](-----) [1](-----) [2](-----) [3](-----) [4](-----) Total
[0] : 398(0.201) 389(0.196) 398(0.201) 409(0.206) 390(0.197) 1984
[1] : 387(0.195) 401(0.202) 357(0.180) 430(0.217) 406(0.205) 1981
[2] : 406(0.199) 425(0.208) 426(0.209) 391(0.191) 394(0.193) 2042
[3] : 418(0.209) 339(0.169) 460(0.230) 379(0.189) 408(0.204) 2004
[4] : 374(0.188) 428(0.215) 401(0.202) 395(0.199) 391(0.197) 1989



552 名前:127 mailto:sage [2007/10/18(木) 19:43:52 ]
自分が本当に理解しているのは過去の自分だけである

おっと言い忘れたが,最初のゲーム開始時のプレイヤーのランクは全て0だ。
それから連番は1.ではなく(1)に訂正する。

さて上記の結果からは,Totalの値が全て2000付近であることが分かる。
ゲーム回数は10000であるから各ランクになる確率は等しく1/5ということになる。
つまり,勝負は完全に時の運ということだ。
更に,各ランクから各ランクへの遷移確率も全て0.2付近である。
つまり,現在のランクと次のゲームのランクとの相関はないということを意味する。

大富豪がゲームとして成立するには
人間の感情的な部分を考慮し,それをある程度実現するルールが必要である。

(a)誰も最下位にはなりたくない。最下位になったとしたら出来るだけ早く最下位を脱したい。
(b)誰もが一番になりたい。一番になったとしたら出来るだけ長く一番であり続けたい。

この二つを実現するルールは既に存在する。
それらについて統計的確率の側面から検証してみよう。

553 名前:127 mailto:sage [2007/10/19(金) 20:37:11 ]
誰もいないか

554 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 23:59:32 ]
いるけど

555 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 00:17:55 ]
いないか

556 名前:127 mailto:sage [2007/10/20(土) 00:18:51 ]
誰もいないと言ったのだ

557 名前:127 mailto:sage [2007/10/20(土) 00:46:36 ]
さてと

Totalの各値をゲーム回数10000で割った値をランク率,カッコ内の値をランク遷移率と呼ぶことにする。

(2)
各ゲームのディールの開始プレイヤーを最初に登録されたプレイヤーに固定し
各ゲームの最初の場の親をダイヤの3を持つプレイヤーにした場合

結果を以下に示す。

********************** Players Record (PlayCount=10000) ***********************
___________________________ Player TestA Record ___________________________

(省略されました・・全てを読むことはできません)

___________________________ Player TestE Record ___________________________
    [0](-----) [1](-----) [2](-----) [3](-----) [4](-----) Total
[0] : 411(0.206) 407(0.204) 416(0.209) 368(0.185) 389(0.195) 1991
[1] : 377(0.193) 380(0.195) 363(0.186) 400(0.205) 432(0.221) 1952
[2] : 385(0.196) 374(0.190) 401(0.204) 407(0.207) 402(0.204) 1969
[3] : 399(0.199) 408(0.204) 362(0.181) 421(0.210) 411(0.205) 2001
[4] : 418(0.200) 383(0.184) 428(0.205) 405(0.194) 453(0.217) 2087

ディールの開始プレイヤーを最初に登録されたプレイヤーに固定した場合,
54 = 11 * 4 + 10
より最後に登録されたプレイヤーの持ち札が常に他のプレイヤーの持ち札より一枚少なくなる。
もしディールの開始プレイヤーがゲームの勝敗に影響するならば,
(1)の場合と比べてプレイヤーTestEの勝敗に偏りが生じると予想される。
この結果からはプレイヤーTestEのランク率及びランク遷移率に顕著な変化は認められない。
よってディールの開始プレイヤーの決定に偏りが生じてもゲームの勝敗に影響しないと言える。

558 名前:127 mailto:sage [2007/10/20(土) 15:21:54 ]
今日も誰もいない
当たり前か

559 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 19:00:08 ]
具体的なコードを出したまへ

560 名前:127 mailto:sage [2007/10/20(土) 20:22:05 ]
誰かがいるということがそれほど重要だろうか

(3)
初回ゲームのディールの開始プレイヤーを最初に登録されたプレイヤーに
初回ゲームの最初の場の親をダイヤの3を持つプレイヤーに
初回以降のゲームのディールの開始プレイヤーを前回のゲームの最下位プレイヤーの次のプレイヤーに
初回以降のゲームの最初の場の親を前回のゲームの最下位プレイヤーにした場合

結果を以下に示す。

********************** Players Record (PlayCount=10000) ***********************
___________________________ Player TestA Record ___________________________

(省略されました・・全てを読むことはできません)

___________________________ Player TestE Record ___________________________
    [0](-----) [1](-----) [2](-----) [3](-----) [4](-----) Total
[0] : 129(0.064) 264(0.131) 429(0.214) 550(0.274) 637(0.317) 2009
[1] : 509(0.255) 433(0.217) 365(0.183) 381(0.191) 307(0.154) 1995
[2] : 458(0.232) 433(0.220) 371(0.188) 391(0.198) 319(0.162) 1972
[3] : 473(0.229) 439(0.212) 417(0.202) 373(0.180) 365(0.177) 2067
[4] : 439(0.224) 426(0.218) 390(0.199) 373(0.191) 329(0.168) 1957

この結果からはランク遷移率に明らかな偏りが認められる。
ランク0のランク遷移率は遷移先のランクと正の相関がある。
その他のランクのランク遷移率は遷移先のランクと負の相関がある。
ランク0はより高いランクへ遷移しやすくその他のランクはより低いランクへ遷移しやすいと言える。
ランク0からランク0へのランク遷移率は最も低い。
(2)の結果よりディール開始プレイヤーは結果に影響しないことが分かっている。
よって「初回以降のゲームの最初の場の親を前回のゲームの最下位プレイヤーにする」というルールが
ランク遷移率に偏りが生じた原因であると考えられる。

561 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 00:27:12 ]
わっふるわっふる



562 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 20:57:59 ]
わっふるわっふる

563 名前:デフォルトの名無しさん mailto:sage [2007/10/23(火) 00:00:41 ]
わっふるわっふる

564 名前:デフォルトの名無しさん mailto:sage [2007/10/23(火) 17:33:02 ]
わっふるわっふる

565 名前:127 mailto:sage [2007/10/24(水) 01:17:00 ]
よし誰もいないな

566 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 01:32:17 ]
みたいだな!

567 名前:127 mailto:sage [2007/10/24(水) 01:44:54 ]
>>561-564
俺のスレ荒らすなボケ

568 名前:127 mailto:sage [2007/10/24(水) 02:05:51 ]
誰もいないというのに誰に話しかけようというのだろうか

大富豪ではゲーム開始時に下位ランクのプレイヤーと上位ランクのプレイヤーとの間でカード交換を行うというルールがポピュラーである。
一般的に,下位ランクのプレイヤーを不利に,上位ランクのプレイヤーを有利にするルールであり,交換の方法にも様々な種類があるが,
ここでは,ランク0がランク4に手持ちの札のうち最強の札2枚を,ランク4がランク0に手持ちの札のうち最弱の札2枚を,
ランク1がランク3に手持ちの札のうち最強の札1枚を,ランク3がランク1に手持ちの札のうち最弱の札1枚を与えることにしよう。

(4)
各ゲームのディールの開始プレイヤーをローテーション制に
各ゲームの最初の場の親をダイヤの3を持つプレイヤーに
初回以降のゲーム開始時にカード交換を行った場合

結果を以下に示す。

********************** Players Record (PlayCount=10000) ***********************
___________________________ Player TestA Record ___________________________

(省略されました・・全てを読むことはできません)

___________________________ Player TestE Record ___________________________
    [0](-----) [1](-----) [2](-----) [3](-----) [4](-----) Total
[0] : 377(0.190) 522(0.263) 612(0.308) 338(0.170) 135(0.068) 1984
[1] : 285(0.140) 508(0.250) 558(0.275) 431(0.212) 247(0.122) 2029
[2] : 400(0.197) 434(0.214) 440(0.217) 434(0.214) 322(0.159) 2030
[3] : 509(0.261) 332(0.170) 263(0.135) 399(0.205) 448(0.230) 1951
[4] : 412(0.205) 233(0.116) 158(0.079) 349(0.174) 854(0.426) 2006

この結果からはランク遷移率に明らかな偏りが認められる。
ランク0とランク1とランク2ではランク4への遷移率が最も低く,ランク3とランク4ではランク2への遷移率が最も低い。
ランク0とランク1とランク2ではランク2への遷移率が最も高く,ランク3ではランク0への遷移率が最も高く,
ランク4ではランク4への遷移率が最も高い。
(1)の結果よりカード交換がランク遷移率に偏りが生じた原因であると考えられる。

569 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 06:42:27 ]
>>788
これがエラーメッセージです。

Exception in thread "AWT-EventQueue-0" java.util.ConcurrentModificationException

at java.util.LinkedList$ListItr.checkForComodification(Unknown Source)
at java.util.LinkedList$ListItr.next(Unknown Source)
at $2.actionPerformed(Unknown Source)
at javax.swing.Timer.fireActionPerformed(Unknown Source)
at javax.swing.Timer$DoPostEvent.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)





570 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 11:52:18 ]
誤爆の上にjavaのスタックトレース全貼りか

571 名前:デフォルトの名無しさん mailto:age [2007/10/24(水) 18:19:19 ]
良スレあげ



572 名前:デフォルトの名無しさん [2007/10/25(木) 01:30:07 ]
カードを構造体でメンバをマークと数字の二つを作って数字だけ比較するってやり方でいこうかと思ったら構造体
を理解してない俺には無理だった

573 名前:デフォルトの名無しさん mailto:sega [2007/10/25(木) 03:46:40 ]
構造体を理解していないのにどうして構造体で実装しようと思い立ったんだ?

574 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 07:54:27 ]
「構造体という素敵なものがあるらしい」
という程度の認識はあったからじゃね?
放射線とかよく分からないけど原発は欲しいよね、素敵だね、みたいな。

575 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 08:51:55 ]
そうだねプロテインだね

576 名前:127 mailto:sage [2007/10/25(木) 11:32:34 ]
うんこー

577 名前:127 mailto:sage [2007/10/31(水) 20:01:52 ]
誰もいない
それが真実であり現実だと認めたくない心が私の甘さの元凶だ
夢で終わると分かっている夢は語る価値を持たない
目的は果たされるべきだ

578 名前:127 mailto:sage [2007/10/31(水) 20:04:46 ]
うんこ

579 名前:デフォルトの名無しさん mailto:sage [2007/10/31(水) 20:07:32 ]
オナニーしたい

580 名前:127 mailto:sage [2007/10/31(水) 20:09:14 ]
おっとコテ忘れ

581 名前:579 mailto:sage [2007/10/31(水) 20:21:21 ]
去ね



582 名前:579 mailto:sage [2007/10/31(水) 20:22:01 ]
アンカー忘れた

>>880
去ね

583 名前:579 mailto:sage [2007/10/31(水) 21:24:01 ]
アンカー間違えたw

>>580
去ね

584 名前:579 mailto:sage [2007/10/31(水) 21:53:13 ]
>>581-583
おめー誰だよ

585 名前:579 mailto:sage [2007/10/31(水) 22:16:52 ]
>>584
>>127
人の名を語るな去ね

586 名前:127 mailto:sage [2007/10/31(水) 22:25:53 ]
と、自演してみた。

587 名前:579 mailto:sage [2007/10/31(水) 22:40:30 ]
>>586
頭大丈夫かまじで

588 名前:127 mailto:sage [2007/10/31(水) 22:45:43 ]
心配ありがとう^^

589 名前:デフォルトの名無しさん mailto:sage [2007/10/31(水) 22:54:40 ]
アホが来て一気に糞スレになったな

590 名前:127 mailto:sage [2007/10/31(水) 22:55:37 ]
これからもがんばります^^

591 名前:デフォルトの名無しさん mailto:sage [2007/10/31(水) 22:56:02 ]
林先生に診てもらったら良いかもね



592 名前:127 mailto:sage [2007/10/31(水) 22:57:28 ]
それはいい考えですね

593 名前:579 mailto:sage [2007/10/31(水) 23:08:53 ]
まああれだ、正直すまんかった

594 名前:デフォルトの名無しさん [2007/11/01(木) 23:10:21 ]
大富豪のコンピュータで強いカードから出す、弱いカードから出す、ランダムに出す、
他に何か戦略ってある?

595 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 23:10:52 ]
ゲーム製作板で聞いたら教えてあげるよ

596 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 23:50:36 ]
>>594
誰にも負けない

597 名前:デフォルトの名無しさん [2007/11/02(金) 00:48:15 ]
大富豪は詰め将棋に近い感覚があると思う。
相手のカードが見えないので、もちろん運頼みの側面もあるのだが。

例えば手持ちカードが「899J22」とあって、今場のカードが6とかだったら、

8で切る
-> 9のペアを出す
-> 2のペアはまず他から出ないので自分で切る
-> Jを捨てて和了り

となるわけだ。
この状態の手持ちカードを、まあ「必至」と呼ぼうか。
もちろん相手の手札との絡みもあるので、確率的なものになると思う。
上の例で言えば、2のペアを持っている敵がいて、自分より先に出されてしまう場合もある。
自分以外のプレイヤーが4人いれば1/4の確率で2のペアを持っている奴がいるので、「75%の必至」みたいに自分の手札を評価できることになる。
まあジョーカーとか、ゲーム開始前のカード移譲とか色々あるのでややこしいとは思うが。

で、この考え方で行くと、プレイヤーのすべきことは、より高確率な必至を作れるカードの残し方を考えながら捨てていく、ということになる。
ということで、AIを作る場合には、残すカードを評価する評価関数を組み立ててやれば良いんじゃないかな。と酔っ払いの俺が思った。

598 名前:デフォルトの名無しさん [2007/11/05(月) 12:41:24 ]
ブーン

599 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 23:45:42 ]
Java房の俺がちょっとずつC言語を勉強しながら書いてみる。

#define CARD_SUIT_SPADE 1
#define CARD_SUIT_HEART 2
#define CARD_SUIT_CLUB 3
#define CARD_SUIT_DIAMOND 4

typedef struct {
unsigned int suit;
unsigned int num;
} Card;

Card *newCard(unsigned int suit, unsigned int num) {
Card *card;
if(suit<1 || 4<suit) return NULL;
if(num<1 || 13<num) return NULL;
card = (Card *)malloc( sizeof(Card) );
card->suit = suit;
card->num = num;
return card;
}

疲れた。続きは明日。

600 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 00:53:27 ]
日付が変わった。
this は C++ コンパイラで怖いか? self 借りとこ。

char CARD_NUM_SYMS[] = " A234567890JQK";
char CARD_SUIT_SYMS[] = " shcd";

char getCardNumSym(Card *self) {
unsigned int num;
if(self==NULL) return '\0';
num = self->num;
if(num<1 || 13<num) return '\0';
return CARD_NUM_SYMS[num];
}
getCardSuitSym(Card *self) {
unsigned int suit;
if(self==NULL) return '\0';
suit = self->suit;
if(suit<1 || 4<suit) return '\0';
return CARD_SUIT_SYM[suit];
}

601 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 01:02:42 ]
戻り値の型書き忘れ。charだ。



602 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 21:35:22 ]
SuitとNumをtypedefしとこ。先にやっときゃ良かった…

typedef unsigned int Suit;
typedef unsigned int Num;

void putCard(Card *self) {
printf( "%c%c", getCardSuitSym(self), getCardNumSym(self) );
}

char *getCardSym(Card *self, char buffer[], size_t bufsize) {
unsigned int i;
if(self == NULL) return NULL;
if(bufsize < 2) return NULL;
buffer[0] = getCardSuitSym(self);
buffer[1] = getCardNumSym(self);
for(i=2; i<bufsize; i++) buffer[i] = '\0';
return buffer;
}

603 名前:127 mailto:sage [2007/11/09(金) 19:49:53 ]
結局誰もいない

(5)
初回ゲームのディールの開始プレイヤーを最初に登録されたプレイヤーに
初回ゲームの最初の場の親をダイヤの3を持つプレイヤーに
初回以降のゲームのディールの開始プレイヤーを前回のゲームの最下位プレイヤーの次のプレイヤーに
初回以降のゲームの最初の場の親を前回のゲームの最下位プレイヤーに
初回以降のゲーム開始時にカード交換を行った場合

結果を以下に示す。

********************** Players Record (PlayCount=10000) ***********************
___________________________ Player TestA Record ___________________________

(省略されました・・全てを読むことはできません)

___________________________ Player TestE Record ___________________________
    [0](-----) [1](-----) [2](-----) [3](-----) [4](-----) Total
[0] : 236(0.121) 401(0.205) 640(0.327) 461(0.236) 217(0.111) 1955
[1] : 173(0.087) 427(0.214) 665(0.333) 481(0.241) 253(0.127) 1999
[2] : 407(0.201) 450(0.222) 404(0.199) 408(0.201) 357(0.176) 2026
[3] : 578(0.294) 405(0.206) 194(0.099) 328(0.167) 463(0.235) 1968
[4] : 560(0.273) 317(0.154) 123(0.060) 290(0.141) 762(0.371) 2052

(以下略)

604 名前:127 mailto:sage [2007/11/09(金) 21:19:35 ]
(5)の結果から何が分かるだろう。

下位ランクは中間ランクまでは容易に上がれ,そこから先は運次第。
上位ランクは上位であり続けるか下位に落ちるかのギャンブル。

そこで思い出して欲しい。
このゲームが生まれた1970年代の日本を。
当時は高度経済成長期から安定成長期への移行時期で,
終身雇用制度に基づく一億総中流といった考えが強かった時代だ。
成果主義も格差社会もまだ一般には登場していない。

これまでの実験結果によって明らかになった,
たった2種類のルールによってもたらされるゲーム性は,
そうした時代背景を反映しているとは言えないだろうか。

605 名前:デフォルトの名無しさん mailto:age [2007/11/10(土) 07:09:51 ]
うだうだ独り言はキモイ
多くの新しい知を混ぜるためにage

606 名前:127 mailto:sage [2007/11/10(土) 07:24:54 ]
誰もいなければ誰と戦おう
誰もいなければ誰を傷つけよう
誰もいなければ誰を滅ぼそう

607 名前:599 mailto:sage [2007/11/10(土) 07:31:43 ]
>>604
プログラマならコードで語るもんだぜ。
と言うわけで 599 からコードを貼りつづける Java房な俺。

typedef struct {
size_t length;
Card *cards[256];
} Deck;

Deck *freeDeck(Deck *deck) {
unsigned int i;
for(i=0; i<256; i++) freeCard(deck->cards[i]);
free(deck);
return NULL;
}

Deck *newDeck() {
unsigned int i;
Deck *deck;
deck = (Deck *)malloc( sizeof(Deck) );
if(deck == NULL) return NULL;
deck->length = 0;
for(i=0; i<256; i++) deck->cards[i] = NULL;
return deck;
}

この後は Player と Game も構造体にする予定。
そーいや、1ゲームを Game にするとして、大貧民全体としての
何ゲームかセットにしたものは何て呼べば良いんだろ。

608 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 09:21:42 ]
while( true ) {
  printf("            ∩_\n");
  printf("           〈〈〈 ヽ\n");
  printf("          〈⊃  }\n");
  printf("   ∩___∩  |   |\n");
  printf("   | ノ      ヽ !   !\n");
  printf("  /  ●   ● |  /\n");
  printf("  |    ( _●_)  ミ/ <こいつ最高にアホ\n");
  printf(" 彡、   |∪|  /\n");
  printf("/ __  ヽノ /\n");
  printf("(___)   /\n\n"),
}

609 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 12:12:49 ]
>608
オーケー、その案採用するぜ。まだ先だけど。

Card *pushCardToDeck(Deck *self, Card *card) {
if(self->length > 255) return NULL;
self->cards[self->length] = card;
self->length++;
return card;
}
Card *popCardFromDeck(Deck *self) {
Card *card;
if(self->length < 1) return NULL;
self->length--;
self->cards[self->length] = NULL;
return card;
}
Deck *makeDeck() {
Suit s;
Num n;
Deck *deck;
deck = newDeck();
if(deck == NULL) return NULL;
for(s=1; s<=4; s++) {
for(n=1; n<=13; n++) {
Card *c = newCard(s,n);
if(c == NULL) return freeDeck(deck);
if(pushCardToDeck(deck, c) == NULL) return freeDeck(deck);
}
}
return deck;
}

610 名前:デフォルトの名無しさん [2008/03/14(金) 10:33:40 ]


611 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 10:54:17 ]
空気読めない中二病のせいで誰も居なくなったスレだ



612 名前: ◆PyIJyOzha6 mailto:sage [2008/04/27(日) 00:50:45 ]
test

613 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 06:48:03 ]
あれ?終わり?どうせなら、ババ抜き、ポーカー、ブラックジャック、スピード、
7ならべ、大富豪(大貧民)、フリーセル、ソリティアくらい作ろうぜ?






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<153KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef