A班 大富豪 Leader;平尾 仲達 Programmer;古川 智啓 Player , Algorithmer; 長畑 弘樹,吉村 達也,河本 拓哉 作成方針 • プログラムの作成する人と,アルゴリズムを 考える人にわかれて作業を進めた。 • メンバーの中でパソコンを使い慣れている古 川にプログラムの作成をメインで進めてもらっ た。 • 他のメンバーで,アルゴリズムを考えた。 アルゴリズムの方針 1. 2. 3. 4. 5. 基本ルールの確認 追加ルールの決定 人がプレイする時の思考方法の確認 半アルゴリズム化 アルゴリズムの作成 1. 半Algorithmを利用して,フローチャートを作成 2. プログラムを作成 大富豪 基本ルール • • • • 大富豪とは,トランプゲームの一種である。 カードは52(~54枚)をプレイヤーに均等にすべて配り分ける。 カードの強弱は弱い順に3,4,5,…,K,A,2である。 最初の人は,好きなカードを場に出すことができる。出し方は, 同じ数字を複数枚出すことができる。1枚の時をシングル,2 枚の時をペア,3枚の時をトリプルと呼ぶこともある。 • 基本的に時計回りで順番が回り,自分の番に場に出ている カードより強い,同じ枚数のカードを出す。出せるカードがな いときや,出したくないときは,パスをする。 • 最後に出した人以外全員パスをしたら,場が流れ,最後に出 した人が場にカードを出す。 • 手札を先に全部出した人の勝ちになる。全員が上がるまで, ゲームを続け,順位を決める。 大富豪 採用追加ルール • 4人プレイ • 革命 – 4枚同じ数を同時に出したときから,3から2までの強さが 逆転する。 – 一度革命された後に(3が強いときに)革命することを,革 命返しということもある。 • 八流し(八切り) – 8を出したら,場のカードが流れる。 • イレブンバック(バック) – 11を出したときにその場が流れるまで革命状態になる。 人の思考 • 何もない場に出す時 – 手札が多いとき • 弱いカードから出す。シングル(ペア,トリプルになってないカード)の手札から出す。 – 手札が少ないとき • 他の人に上がられないように,かつ自分が上がれるように出す。手札により様々に出し方が 変化する。 • 何か出ている場に出す時 – 手札が多いとき • 出せるカード中で弱いカードから使う。強いカードは出せる場面があっても出さない。ペアやト リプル,4枚はなるべく崩さない。 – 手札が少ないとき • 勝てると思ったときに強いカードを使う。弱いカードをなるべく残さない。 • 革命 – 革命対策で最弱カードを手札に残しておく。 – 革命時,強弱を入れ替えて思考する。 • 8流し – 最後のほうに場を流すために使う。 • イレブンバック – 手札に最弱カードを残しておいて,Jackが出てきたときに使う。 半アルゴリズム化(1) • Algorithmを考える上で,3~10までの数値は そのままの数値として扱う。J→11,Q→12, K→13,A→14,2→15として扱う。 • 手札の種類で,序盤(3種類以下),中盤(4種 類),終盤(5種類以上)というように場合分けを する。 半アルゴリズム化(2) • 何もない場への出し方 – 序盤と中盤(4種類以上) • 最弱カードを除いたカードから出す。ペアよりシングルの手札から 出す。 • シングル>ペア>トリプルの順に出しやすくするために,ペアのとき はカードの値+4.5,トリプルのときはカードの値+7.75の修正値を 与えて,出すカードの順位を評価させる。 – 終盤(3種類以下) • 2と8が同時に手札にあれば,8,2の順に出す。 • それ以外の時は,弱いカードから出す。 半アルゴリズム化(3) • 場にシングルカードが出ている時 – 序盤,中盤は出すことができるペアやトリプル以 外の弱いカードから出す。Q以上のトリプルは崩 して出す。最強カードは出さない。 – 終盤はペアを崩してでも積極的に出す。 • 場にペアやトリプルが出ている時 – 序盤,中盤は最強カード以外のカードで出すこと ができる弱いカードから出す。 – 終盤は積極的に出す。 アルゴリズム化 場;Empty(なにも出ていない) 何種類カードを持っている? 3種類 以下 4種類 以上 最弱カード(3or4)を残す 8を所持? yes ダブル→カードの値+4.5 トリプル→カードの値+7.75 4枚は3,4,5とK,A,2の枚数を比較 弱いものを出す 8をだす 2を持っている? yes 値の小さいものを出す no 2を出す no 弱いものから出す アルゴリズム化 場;ダブル 4種類以上所持 場;カードが3? Yes Yes No No 手札;3を所持? 考慮カード;手札に3枚? 考慮カード;手札に2枚ちょうど? YesYes Yes 出す 考慮カード=場のカード+2 No NoNo 考慮カード⇒考慮カード+1 考慮カード=場のカード+1 考慮カード;手札に2枚ちょうど? Yes No 考慮カード;12以上? 考慮カード;最強の手持ちカード? 出す No Yes PASS Flowchart 場:Empty 非革命 4種類以上所持 i=1 c[i] (カードの枚数) 0 cs[i]=100 i++ i=>14 1 cs[i]=i 2 cs[i]=i+4.5 3 cs[i]=i+7.75 4 Flowchart 場:Empty 非革命 4種類以上所持 4 i 6<=i<=12 3<=i<=5 3・c[3]+2・c[4]+1・c[5] >3・c[2]+2・c[1]+1・c[13] yes cs[i]=-20 i=1,2 3・c[3]+2・c[4]+1・c[5] >3・c[2]+2・c[1]+1・c[13]-(1+i)・c[i] no yes cs[i]=50 cs[i]=-20 3・c[3]+2・c[4]+1・c[5]-(6-i)・c[i] >3・c[2]+2・c[1]+1・c[13] yes cs[i]=-20 i=13 no cs[i]=50 no cs[i]=50 3・c[3]+2・c[4]+1・c[5] >3・c[2]+2・c[1] yes cs[i]=-20 no cs[i]=50 Flowchart 場:Empty 非革命 4種類以上所持 i=1 c[i] (カードの枚数) 0 no cs[i]=100 1 cs[i]=i 2 cs[i]=i+4.5 3 4 cs[i]=i+7.75 i++ i=>14 yes cs[1]=cs[1]+13,cs[2]=cs[2]+13,cs[3]=cs[3]+20,cs[8]=cs[8]+20 c[3]=0 no yes cs[4]=cs[4] cs[4]=cs[4]+20 MINcs[i]を出す Programming プログラム構造 MainPanelクラス メイン画面の制御。結果の表示などを行う。 CardDeckクラス Playerのインスタンスにカード1~52を配る。 Cardクラス 配られた整数表現のカードに柄とナンバーを与える。 Fieldクラス 場の状態を管理する。 カードの強弱の判断も行う。 CPUクラスの プレイヤーのコンストラクタ。 プレイヤーの各定義。 Playerクラスプログラムを変更 Userクラス 人間が扱うPlayerについての記述 CPUクラス CPUが扱うPlayerについての記述。思考 Programming プログラム変更 Playerクラス 持っているカードの種類の数を表す変数kindと出しやすさの指標である配列cs[ ]を定義 CPUクラス 元のプログラム 場合分けの仕方 革命の場合 場にカードがない場合 場にカードがある場合 革命でない場合 場にカードがない場合 場にカードがある場合 カードの出し方 ルールに従って所持しているカード のうち弱いものから順に出す。 変更後のプログラム 場合分けの仕方 元のプログラム中のおのおのの場 にカードがある・ない場合の中にCP が所持しているカードの種類に応じ たプログラムを追加。 カードの出し方 アルゴリズムに従って行動するよう にプログラム。 結果 • 改造前の対戦結果 – 25回中 • 1位・・・23回(92%) • 2位・・・1回(4%) • 4位・・・1回(4%) – 期待値・・・1.16位 • 改造後の対戦結果 – 25回 • • • • 1位・・・12回(48%) 2位・・・6回(24%) 3位・・・5回(20%) 4位・・・2回(8%) – 期待値・・・1.88位 考察 • 元のプログラムより強くなった。 • 元のプログラムから引き継いだバグは解決できな かった。 • 停止するバグが多い。 • できればもっと,人の思考に近付けたアルゴリズム を考えたい。 感想 今回完成した大富豪に当初考えていたアルゴ リズムすべてを組み込むことは出来ませんで した。半アルゴリズム化の時点ではより人の 考えに近いカードの切り方を検討していたの ですが実際それをアルゴリズム化してプログ ラムすることは非常に難しく、私たちが普段何 気なく行う判断がいかに複雑かを知る良い機 会となりました。 Thanks for your Member oflistening Group Staff Roll Tatsuya大富豪 Yoshimura Reference 2008 F-Daifugo Takuya Komoto Produced by Hiroki Nagahata 2009-A group Programmer Leader Tomohiro Furukawa Algorithmer Tatsuya Yoshimura Chutatsu Hirao Chutatsu Hirao Takuya Komoto Tomohiro Furukawa Hiroki Nagahata PowerPoint made by Tatsuya Yoshimura Hiroki Nagahata Tomohiro Furukawa Chutatsu Hirao The End
© Copyright 2024 ExpyDoc