import java.util.Scanner;
public class Main {
public static void main
(String[] args
) { System.
out.
println("プレーヤー同士でジャンケンをします。対戦人数を入力して下さい(2人以上8人以内)"); // とりあえず20人を上限 Scanner scanner
= new Scanner
(System.
in); String numOfManStr
= scanner.
nextLine(); if (numOfManStr.matches("[2-8]")==false) {
System.
out.
println("指定された人数を入力して下さい。終了します"); }
int numOfMan
= Integer.
parseInt(numOfManStr
); for (int i=0; i<numOfMan; i++) {
manNames[i] = "MAN#"+i;
}
// for (int i=0; i<numOfMan; i++) {
// System.out.println(manNames[i]);
// }
boolean[] survival = new boolean[numOfMan];
for (int i=0; i<numOfMan; i++) {
survival[i] = true;
}
int[] manHands = new int[numOfMan];
int counter_0; int counter_1; int counter_2;
int x;
// 0はグー、1はチョキ、2はパーをそれぞれ表すものとする
do {
for (int i=0; i<numOfMan; i++) {
System.
out.
println("プレーヤ―"+manNames
[i
]+"さんの手を入力して下さい"); // 後に結合 System.
out.
println("グーなら0、チョキなら1、パーなら2を入力して下さい"); manHandsStr[i] = scanner.nextLine();
if (manHandsStr[i].matches("[0-2]")==false) {
System.
out.
println("指定された数値を入力して下さい。終了します"); }
manHands
[i
] = Integer.
parseInt(manHandsStr
[i
]); }
counter_0 = 0; counter_1 = 0; counter_2 = 0;
for(int i=0; i<numOfMan; i++) {
if(manHands[i]==0) {
counter_0 += 1;
} else if(manHands[i]==1) {
counter_1 += 1;
} else { // manHands[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<numOfMan; i++) {
if (manHands[i]==1) {
survival[i] = false; // チョキは敗者
}
}
System.
out.
println("この時点で残っているのは"); for (int i=0; i<numOfMan; i++) {
if (survival[i]==true) {
System.
out.
println(manNames
[i
]); numOfSuvivar += 1;
}
}
} else if (counter_1 > 0 && counter_2 > 0) {
for (int i=0; i<numOfMan; i++) {
if (manHands[i]==2) {
survival[i] = false; // パーは敗者
}
}
System.
out.
println("この時点で残っているのは"); for (int i=0; i<numOfMan; i++) {
if (survival[i]==true) {
System.
out.
println(manNames
[i
]); numOfSuvivar += 1;
}
}
} else { // counter_2 > 0 && counter_0 > 0 の時
for (int i=0; i<numOfMan; i++) {
if (manHands[i]==0) {
survival[i] = false; // グーは敗者
}
}
System.
out.
println("この時点で残っているのは"); for (int i=0; i<numOfMan; i++) {
if (survival[i]==true) {
System.
out.
println(manNames
[i
]); numOfSuvivar += 1;
}
}
}
System.
out.
println("の"+numOfSuvivar
+"人"); if (numOfSuvivar==1) {
for (int i=0; i<numOfMan; i++) {
if (survival[i]==true) {
System.
out.
println("最終勝者は"+manNames
[i
]); }
}
}
while (numOfSuvivar!=1) {
do {
for (int i=0; i<numOfMan; i++) {
if (survival[i]==true) {
manHandsStr[i] = scanner.nextLine();
if (manHandsStr[i].matches("[0-2]")==false) {
System.
out.
println("指定された数値を入力して下さい。終了します"); }
manHands
[i
] = Integer.
parseInt(manHandsStr
[i
]); } else {
manHands[i] = 3;
}
}
counter_0 = 0; counter_1 = 0; counter_2 = 0;
for (int i=0; i<numOfMan; i++) {
if (manHands[i]==0) {
counter_0 += 1;
} else if (manHands[i]==1) {
counter_1 += 1;
} else if (manHands[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<numOfMan; i++) {
if (manHands[i]==1) {
survival[i] = false; // チョキは敗者
}
}
System.
out.
println("この時点で残っているのは"); for (int i=0; i<numOfMan; i++) {
if (survival[i]==true) {
System.
out.
println(manNames
[i
]); numOfSuvivar += 1;
}
}
} else if (counter_1 > 0 && counter_2 > 0) {
for (int i=0; i<numOfMan; i++) {
if (manHands[i]==2) {
survival[i] = false; // パーは敗者
}
}
System.
out.
println("この時点で残っているのは"); for (int i=0; i<numOfMan; i++) {
if (survival[i]==true) {
System.
out.
println(manNames
[i
]); numOfSuvivar += 1;
}
}
} else if (counter_2 > 0 && counter_0 > 0) {
for (int i=0; i<numOfMan; i++) {
if (manHands[i]==0) {
survival[i] = false; // グーは敗者
}
}
System.
out.
println("この時点で残っているのは"); for (int i=0; i<numOfMan; i++) {
if (survival[i]==true) {
System.
out.
println(manNames
[i
]); numOfSuvivar += 1;
}
}
}
System.
out.
println("の"+numOfSuvivar
+"人"); if (numOfSuvivar==1) {
for (int i=0; i<numOfMan; i++) {
if (survival[i]==true) {
System.
out.
println("勝者は"+manNames
[i
]); }
}
break; // 正常終了
}
}
}
}