###前提・実現したいこと
JAVAでジャンケンのプログラムを作っています。
相手は様々なパターンで手を繰り出してきます。
こちらが入力してジャンケンをするプログラムではなく、こちらも自動で手を返すプログラムを組んで戦わせる形です。
その際、グーで勝つと3ポイント、チョキは4ポイント、パーは5ポイント入ります。
一万回繰り返し、最後にポイントの高かったほうが勝ち。
出来ないのは、こちらの出した手に勝てる手を次のターンに出す(例えばこちらがグーのとき、相手は次のジャンケンのときにパーを出す)相手(A)等の判別方法です。
こちらは一つのプログラムの中で、先述したAのような相手、こちらの出した手と全く同じものを次のターンに出す相手B、完全ランダムに手を出す相手Cとジャンケンをしなくてはいけません。
戦う相手はランダムなため、しっかりと判別できないと負けてしまう事も考えられます。
どうすればA,B,Cの相手を判別できるでしょうか?
###発生している問題・エラーメッセージ
エラーメッセージ
###該当のソースコード
改変不可能 import java.util.*; class J1Practice { static int Win1 = 0, Win2 = 0; static int Score1 = 0, Score2 = 0; static final int GUU = 1; static final int TYOKI = 2; static final int PAA = 3; public static void main(String args[]){ int k, p1, p2, tmp; // プレイヤー1のオブジェクトを生成 J1Fighter f1 = new Parrot(); // プレイヤー2のオブジェクトを生成 J1Fighter f2 = new Smart(); p1 = p2 = tmp = 0; // 1万回じゃんけんを実行 for (k = 0; k < 10000; k++ ) { p1 = f1.Janken(k, p2); // プレイヤー1の手 p2 = f2.Janken(k, tmp); // プレイヤー2の手 tmp = p1; if ((p1 < GUU) || (p1 > PAA)) { // プレイヤー1の反則負け Score2 = 99999; } if ((p2 < GUU) || (p2 > PAA)) { // プレイヤー2の反則負け Score1 = 99999; } if ((Score1 == 99999) || (Score2 == 99999)) break; // じゃんけんの判定 if (p1 == GUU) { if (p2 == TYOKI) { ++Win1; Score1 += 3; } else if (p2 == PAA) { ++Win2; Score2 += 5; } } else if (p1 == TYOKI) { if (p2 == PAA) { ++Win1; Score1 += 4; } else if (p2 == GUU) { ++Win2; Score2 += 3; } } else if (p1 == PAA) { if (p2 == GUU) { ++Win1; Score1 += 5; } else if (p2 == TYOKI) { ++Win2; Score2 += 4; } } } if (Score1 > Score2) System.out.println(f1.getName() + "の勝ちです"); else if (Score1 < Score2) System.out.println(f2.getName() + "の勝ちです"); else System.out.println("引き分けです"); System.out.println(" " + f1.getName() + " vs " + f2.getName()); System.out.println("Score [ " + Score1 + " : " + Score2 + " ]"); System.out.println("W i n [ " + Win1 + " : " + Win2 + " ]" ); } } こちらが改変できるプログラム class Player1 extends J1Fighter { int op[] = new int[10000]; int g,c,p; int i,r; Player1() { setName("Player1"); g = c = p = 0; for(i=0; i<10000; i++)op[i]=0; } int Janken(int no, int last) { } } こちらは改変できませんが一応 class J1Fighter { static final int GUU = 1; static final int TYOKI = 2; static final int PAA = 3; private String name = null; private String pict = null; int Janken(int no, int last) { return(0); // 反則負け } void setName(String n) { name = n; } String getName() { return name; } void setPict(String f) { pict = f; } String getPict() { return pict; } }
###試したこと
課題に対してアプローチしたことを記載してください
###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。