Я создаю игру ** угадывание слов *
Player1 вводит загадочное слово, а затем выводит количество букв в этом слове.
Затем в , в то время как l oop, player2 угадывает слова, и если они не являются загадочным словом, тогда в утверждении говорится: "фраза не является загадочным словом ", Но , когда player2 угадает загадочное слово, на выходе должно получиться следующее, как показано в операторах печати ниже:
else if (phrase.equals(mysteryphrase)){
go = false;
counter--;
int points = (mysteryphrase.length()*10-counter*5);
System.out.println("Correct! The mystery word is"+mysteryphrase+".");
System.out.println("You made "+counter+" incorrect guesses");
System.out.println("You get "+points+" points");
Я заставил его работать, но затем другой Требование состоит в том, что когда он достигнет двойной длины загадочного слова, игра должна остановиться и сказать следующее:
else if (counter2 == mysteryphrase.length()*2){
go = false;
System.out.println("\n"+"You made "+counter2+" incorrect guesses");
System.out.println("You get 0 points");
System.out.println("You lost the game");
}
Проблема, с которой я столкнулся, заключается в том, что существует определенная формула для подсчета очков Это:
Points = (number of letters in the word * 10 - incorrect guesses *5)
Это работает, когда игра останавливается после удвоения длины загадочного слова, но когда player2 правильно угадывает загадочное слово, это не работает. Почему?
Для заинтересованных это весь мой код:
import java.util.Scanner;
public class Wordguess{
public static void main(String[]args){
Scanner keyboard = new Scanner(System.in);
int option = Integer.parseInt(keyboard.nextLine());
String mysteryphrase = keyboard.next();
System.out.print("The mystery word has "+mysteryphrase.length()+" letters"+".");
if (option == 1){
boolean go = true;
while (go){
String phrase = keyboard.next();
if (!phrase.equals(mysteryphrase)){
System.out.print("The mystery word is not "+phrase+".");
}
else if (phrase.equals(mysteryphrase)){
go = false;
System.out.print("Correct! The mystery word is "+mysteryphrase+".");
}
}
}
else if (option == 2){
int counter = 1;
boolean go = true;
while (go){
String phrase = keyboard.next();
if (!phrase.equals(mysteryphrase)){
System.out.print("The mystery word is not "+phrase);
counter++;
}
else if (phrase.equals(mysteryphrase)){
go = false;
counter--;
int points = (mysteryphrase.length()*10-counter*5);
System.out.println("Correct! The mystery word is"+mysteryphrase+".");
System.out.println("You made "+counter+" incorrect guesses");
System.out.println("You get "+points+" points");
}
}
}
else if (option == 3){
int counter = 1;
int counter2 = 0;
boolean go = true;
while (go){
String phrase = keyboard.next();
if (!phrase.equals(mysteryphrase)){
System.out.print("The mystery word is not "+phrase);
counter++;
counter2++;
}
else if (phrase.equals(mysteryphrase)){
go = false;
counter--;
int points = (mysteryphrase.length()*10-counter*5);
System.out.println("Correct! The mystery word is"+mysteryphrase+".");
System.out.println("You made "+counter+" incorrect guesses");
System.out.println("You get "+points+" points");
}
else if (counter2 == mysteryphrase.length()*2){
go = false;
System.out.println("\n"+"You made "+counter2+" incorrect guesses");
System.out.println("You get 0 points");
System.out.println("You lost the game");
}
}
}
}
}
Как вы можете видеть, я использовал два счетчика, один для выигрыша, а другой для проверки загадочных слов длина удваивается, и игра заканчивается. "counter", похоже, не работает для очков, когда player2 угадывает правильно.
Следующее является моим результатом, который неверен для очков:
You get 5 points
Это должно быть, скажем, после того, как игроки угадали правильно и после 5 угадываний:
You get 70 points