|
分類:[Java]
以下のように作成していたのですが、表示がおかしく答えにたどり着かないのですが、どこを改善したらよろしいでしょうか?
import java.util.Scanner;
import java.util.Random;
public class Exercise2 {
public static void main (String[] args){
Scanner stdIn = new Scanner (System.in);
Random rand = new Random();
System.out.println("★☆★数当てゲーム★☆★\n");
System.out.println("遊び方:ジャンケンの手の選択は、0・・・グー/ 1・・・チョキ/ 2・・・パー とします。\n" +
" ジャンケンで勝ったほうが回答権が得られます。\n");
System.out.print("初めに回答する数字の範囲を決定します。\n学籍番号の下2桁を入力してください。→ ");
int num = stdIn.nextInt();
System.out.print("好きな整数を入力してください。→ ");
int who = stdIn.nextInt();
int ran = rand.nextInt( 2*num+1);
int pm = ran - num; //乱数の範囲整数±学籍番号下2桁
int Ans = pm + who; //ランダムに選択された整数
int aOwn = 0,aCom =0,c=1;
int lim = (int)(Math.random()*10)+(int)(Math.random()*10)+1;
System.out.println("回答できるチャンスは合計" + lim +"回です。頑張ってください!");
for(int i=1; i<=lim ;i++)
{
System.out.println("第" + i + "回戦目です!");
System.out.print("最初はグー、じゃんけん、ぽん! → ");//もし、0,1,2以外の入力がきたらどうする?
int own = stdIn.nextInt();
int com = (rand.nextInt(101))%3;
switch( own )
{
case 0: System.out.print("グー vs "); break;
case 1: System.out.print("チョキ vs "); break;
case 2: System.out.print("パー vs "); break;
}
switch( com )
{
case 0: System.out.println("グー"); break;
case 1: System.out.println("チョキ"); break;
case 2: System.out.println("パー"); break;
}
while( own == com )
{
System.out.print("あいこで、しょっ! → ");
own = stdIn.nextInt();
com = (rand.nextInt(101))%3;
switch( own )
{
case 0: System.out.print("グー vs "); break;
case 1: System.out.print("チョキ vs "); break;
case 2: System.out.print("パー vs "); break;
}
switch( com )
{
case 0: System.out.println("グー"); break;
case 1: System.out.println("チョキ"); break;
case 2: System.out.println("パー"); break;
}
}
if((own==0&&com==1)||(own==1&&com==2)||(own==2&&com==0))
{
System.out.print("あなたの予想はいくつ? → ");
aOwn = stdIn.nextInt();
}
else
{
int rCom = rand.nextInt( 2*num+1 );
int wCom = rCom - num;
aCom = who + wCom;
System.out.println("NPCの予想 → " + aCom );
}
if((aOwn==Ans)||(aCom==Ans))
{
System.out.println("正解です。答えは、"+ Ans +"でした。");
break;
}
else if( c==lim )
{
if((aOwn!=Ans)||(aCom!=Ans))
System.out.println("残念でした。答えは、"+ Ans + "でした。また、やってみてね!");
}
else
{
if((aOwn<Ans)) //表示がおかしい
{
System.out.println("予想より大きいです、考え直しましょう!");
c++;
continue;
}
if((aCom<Ans)) //表示がおかしい
{
System.out.println("予想より大きいです、考え直しましょう!");
c++;
continue;
}
else if(aOwn>Ans) //表示がおかしい
{
System.out.println("予想より小さいです、考え直しましょう!");
c++;
continue;
}
else if(aCom>Ans) //表示がおかしい
{
System.out.println("予想より小さいです、考え直しましょう!");
c++;
continue;
}
}
}
}
}
|