public class Main {
public static void main
(String[] args
) { System.
out.
println("コンピュータ同士でジャンケンをします。対戦人数を入力して下さい(2人以上8人以内)"); // とりあえず20人を上限 String numOfCpuStr
= new java.
util.
Scanner(System.
in).
nextLine(); if (numOfCpuStr.matches("[2-8]")==false) {
System.
out.
println("指定された人数を入力して下さい。終了します"); }
int numOfCpu
= Integer.
parseInt(numOfCpuStr
); for (int i=0; i<numOfCpu; i++) {
cpuNames[i] = "CPU#"+i;
}
// for (int i=0; i<numOfCpu; i++) {
// System.out.println(cpuNames[i]);
// }
boolean[] survival = new boolean[numOfCpu];
for (int i=0; i<numOfCpu; i++) {
survival[i] = true;
}
int[] cpuHands = new int[numOfCpu];
int counter_0; int counter_1; int counter_2;
int x;
// 0はグー、1はチョキ、2はパーをそれぞれ表すものとする
do {
for (int i=0; i<numOfCpu; i++) {
cpuHands[i] = rand.nextInt(3);
}
counter_0 = 0; counter_1 = 0; counter_2 = 0;
for(int i=0; i<numOfCpu; i++) {
if(cpuHands[i]==0) {
counter_0 += 1;
} else if(cpuHands[i]==1) {
counter_1 += 1;
} else { // cpuHands[i]==2 の時
counter_2 += 1;
}
}
System.
out.
println("グーの人数は"+counter_0
+"、 チョキの人数は"+counter_1
+"、 パーの人数は"+counter_2
); x = 0;
if (counter_0 > 0) x += 1;
if (counter_1 > 0) x += 1;
if (counter_2 > 0) x += 1;
} while(x==1 || x==3); // あいこの時
// 以降はx==2(なんらかの勝敗確定)という条件をクリアしている
int numOfSuvivar = 0; // 初期化
if (counter_0 > 0 && counter_1 > 0) {
for (int i=0; i<numOfCpu; i++) {
if (cpuHands[i]==1) {
survival[i] = false; // チョキは敗者
}
}
System.
out.
println("この時点で残っているのは"); for (int i=0; i<numOfCpu; i++) {
if (survival[i]==true) {
System.
out.
println(cpuNames
[i
]); numOfSuvivar += 1;
}
}
} else if (counter_1 > 0 && counter_2 > 0) {
for (int i=0; i<numOfCpu; i++) {
if (cpuHands[i]==2) {
survival[i] = false; // パーは敗者
}
}
System.
out.
println("この時点で残っているのは"); for (int i=0; i<numOfCpu; i++) {
if (survival[i]==true) {
System.
out.
println(cpuNames
[i
]); numOfSuvivar += 1;
}
}
} else { // counter_2 > 0 && counter_0 > 0 の時
for (int i=0; i<numOfCpu; i++) {
if (cpuHands[i]==0) {
survival[i] = false; // グーは敗者
}
}
System.
out.
println("この時点で残っているのは"); for (int i=0; i<numOfCpu; i++) {
if (survival[i]==true) {
System.
out.
println(cpuNames
[i
]); numOfSuvivar += 1;
}
}
}
System.
out.
println("の"+numOfSuvivar
+"人"); if (numOfSuvivar==1) {
for (int i=0; i<numOfCpu; i++) {
if (survival[i]==true) {
System.
out.
println("勝者は"+cpuNames
[i
]); }
}
}
while (numOfSuvivar!=1) {
do {
for (int i=0; i<numOfCpu; i++) {
if (survival[i]==true) {
cpuHands[i] = rand.nextInt(3);
} else {
cpuHands[i] = 3;
}
}
counter_0 = 0; counter_1 = 0; counter_2 = 0;
for (int i=0; i<numOfCpu; i++) {
if (cpuHands[i]==0) {
counter_0 += 1;
} else if (cpuHands[i]==1) {
counter_1 += 1;
} else if (cpuHands[i]==2) { // cpuHands[i]==2 の時
counter_2 += 1;
}
}
System.
out.
println("グーの人数は"+counter_0
+"、 チョキの人数は"+counter_1
+"、 パーの人数は"+counter_2
); x = 0;
if (counter_0 > 0) x += 1;
if (counter_1 > 0) x += 1;
if (counter_2 > 0) x += 1;
} while (x==1 || x==3);
numOfSuvivar = 0; // 初期化
if (counter_0 > 0 && counter_1 > 0) {
for (int i=0; i<numOfCpu; i++) {
if (cpuHands[i]==1) {
survival[i] = false; // チョキは敗者
}
}
System.
out.
println("この時点で残っているのは"); for (int i=0; i<numOfCpu; i++) {
if (survival[i]==true) {
System.
out.
println(cpuNames
[i
]); numOfSuvivar += 1;
}
}
} else if (counter_1 > 0 && counter_2 > 0) {
for (int i=0; i<numOfCpu; i++) {
if (cpuHands[i]==2) {
survival[i] = false; // パーは敗者
}
}
System.
out.
println("この時点で残っているのは"); for (int i=0; i<numOfCpu; i++) {
if (survival[i]==true) {
System.
out.
println(cpuNames
[i
]); numOfSuvivar += 1;
}
}
} else if (counter_2 > 0 && counter_0 > 0) {
for (int i=0; i<numOfCpu; i++) {
if (cpuHands[i]==0) {
survival[i] = false; // グーは敗者
}
}
System.
out.
println("この時点で残っているのは"); for (int i=0; i<numOfCpu; i++) {
if (survival[i]==true) {
System.
out.
println(cpuNames
[i
]); numOfSuvivar += 1;
}
}
}
System.
out.
println("の"+numOfSuvivar
+"人"); if (numOfSuvivar==1) {
for (int i=0; i<numOfCpu; i++) {
if (survival[i]==true) {
System.
out.
println("勝者は"+cpuNames
[i
]); }
}
}
}
}
}