2017-12-05 3 views
1

Hallo Ich mache ein Spiel, wo der Spieler mit einem Roboter getroffen wird und der Roboter fragt es eine Zahl zwischen 1-10 zu erraten. Der Spieler hat drei Versuche oder stirbt. Ich habe meinen ganzen Code geschrieben und das Raten funktioniert gut, aber immer wenn das Spiel stimmt, stirbt er immer noch. Ich habe ein paar print-Anweisungen hinzugefügt, um zu sehen, welchen Wert mein Code zurückgibt und es scheint, dass er den falschen Wert zurückgibt. Kann mir jemand helfen? Vielen Dank.Wert kommt nicht von einer anderen Klasse

geht aus dieser Klasse

if (choice != -1) { 
if (john[choice] != null) { 
if (john[choice].compPlayerAttack()) { 
System.out.print("IT'S GAME OVER MAN!\n"); 
    System.exit(0); 
} 
else { 
    System.out.println("Robot appears. Guess a number between 1-10. Get it right and you can pass, or you die. You have three chances.\""); 
     int answer = 0; 
     john[choice].toPass(answer); 
     if (answer== 1) { 
     System.out.println(answer); 
      map[x][y].removeJohnPlayer(); 
     } 
     else { System.out.println(answer); 
     System.out.print("IT'S GAME OVER MAN!\n"); 
    System.exit(0); 
    } 

Hierher

public int toPass(int right){ 


    int hiddenNum = numram.nextInt(MAX_NUMBER); 

    Scanner input = new Scanner(System.in); 

    int numOfGuesses = 0; 
    int a = right; 

    do { 
     System.out.println("Enter a number by guessing: "); 

     int guessedNum = input.nextInt(); 
     numOfGuesses++; 

     if (guessedNum == hiddenNum) { 
      System.out.println("Darn! Your number is matched. You may live."); 
      System.out.println("You have made " + numOfGuesses + " attempts to find the number!"); 

      a = 1; 
      break; 

     } else if (guessedNum < hiddenNum) { 
      System.out.println("Try a bigger number"); 


     } else if (guessedNum > hiddenNum) { 
      System.out.println("Try a smaller number"); 

     }  

} while (numOfGuesses < 3); 
System.out.println(a); 
return a; 

}

Antwort

1

Hier

john[choice].toPass(answer); 

Sie den Wert ignorieren, indem Sie Ihre toPass Methode zurückgegeben.

ändern Sie es an:

answer = john[choice].toPass(answer); 

BTW, gibt es keinen Grund, ein Argument zu Ihrer toPass Methode zu übergeben, da sie keinen Gebrauch davon machen, und es kann es nicht (ändern, da Java ein Pass ist nach Wert Sprache). Ein Rückgabewert ist ausreichend.

d. H. Ändern Sie Ihre Methode auf public int toPass().

Eine weitere Änderung, die Sie vornehmen sollten, besteht darin, den Rückgabetyp in boolean zu ändern. Die Rückgabe true oder false ist besser lesbar als die Rückgabe 1 oder 0.

Verwandte Themen