数値解析 佐藤玲子 堀智恵実 高山明秀 西田直毅 春田常典 インターネットから大富豪のプログラ「dohin」 を入手し、土台とした。その後ゲームのプロ グラムの解析を行い、ゲーム上でコンピュー タの出す手に変更を加えた。 Dohin 大富豪のルール 大富豪では、合計52枚のトランプカードを使用する。 親の出したカードと同じ枚数で、自分よりひとつ前に 出した人のカードよりも、大きい数のカードを出す。 カードが出せない時はパスをする。メンバー全員が出 せない時は、最後にカードを出した人が親になる。 カードを出す、「場」に全部カードを出し切り、最初にあ がると「大富豪」というランクが与えられる。さらに、2 番目にあがったプレーヤーには「富豪」、3番目にあ がったプレーヤーには「貧民」、そして最下位となった 4番目のプレーヤーには「大貧民」というランクが与え られる。 If(PlayerNo==PPLY) {if(hands[PlayerNo][0]>=0) {wn=(int)hands[PlayerNo][0]/SUIT S; wc=1;for(i=1;i<MAX_HAND;i++){ if(hands[PlayerNo][i]>=0) {n=(int)hands[PlayerNo][i]/SUITS; if(n==wn){wc++;}}} putCard(PlayerNo,wn,wc);} if(hands[PlayerNo][i]>=0) {n=(int)hands[PlayerNo][i]/SUITS; if(n>PNUM){ if(n==wn){wc++;} else{wn=n;wc=1;} if(wc==PCNT) {putCard(PlayerNo,wn,wc); changeturn();return;}}}} messages[PlayerNo]= "Pass";}changeturn();} ☆コンピュータが親のとき 親の一枚目が0以上の時、一番 左を出す。二枚目、三枚目と、 一枚目と同じ数字が続くときは、 同時にそれも出す。 ☆コンピュータが親ではないとき 場の数字よりも大きく、場の枚数と 同じ枚数のカードが出せるとき出す。 場の数字よりも小さい数しかない ときや、場の数字よりも大きいカー が場の枚数に足りないときは、パス する。 6 6 場のカー ド 改良前 コンピュータの 手持ちのカード 7 7 7 10 J 6 改良後 6 場 コンピュータ 7 7 場の枚数と同じ枚数 あるカードがない! 7 10 J Q 6 改良後 6 場 コンピュータ 7 7 7 8 8 変更のためのアルゴリズム public void computers(int PlayerNo){int i,c,n,wn=(-1),wc=1,cn=(1);if(PlayerNo==PPLY){ if(hands[PlayerNo][0]>=0){wn=(int)hands[PlayerNo][0]/SUITS;wc=1;for(i=1;i<MA X_HAND;i++){if(hands[PlayerNo][i]>=0){ n=(int)hands[PlayerNo][i]/SUITS;if(n==wn){wc++;}}}putCard(PlayerNo,wn,wc);}} else{for(i=0;i<MAX_HAND;i++){ if(hands[PlayerNo][i]>=0)n=(int)hands[PlayerNo][i]/SUITS; if(n>PNUM){if(n==wn){wc++; }else{wn=n; wc=1;}if(wc==PCNT && (int)hands[PlayerNo][i+1]/SUITS!=n){putCard(PlayerNo,wn,wc); changeturn();return;} if(wc==PCNT && (int)hands[PlayerNo][i+1]/SUITS==n){ cn=1; wc=1; } }}} if(cn==1){for(i=0;i<MAX_HAND;i++){if(hands[PlayerNo][i]>=){n=(int)hands[Play erNo][i]/SUITS;if(n>PNUM){if(n==wn){ wc++;}else{ wn=n;wc=1; }if(wc==PCNT){putCard(PlayerNo,wn,wc);changeturn();return;}}}}}mess ages[PlayerNo]="Pass"; }changeturn();}
© Copyright 2024 ExpyDoc