Как многократно изменять количество переменных с помощью сканера в java? - PullRequest
1 голос
/ 07 мая 2020

Я хочу в основном добавить два символа, один из которых # , то есть константа , а другой x , который изменяется после каждого ввода пользователя. Чтобы дать вам представление, я создаю игру по угадыванию слов, в которой есть несколько вариантов, у меня все они работают, за исключением варианта 5 , на котором я застрял, и для которого требуется следующее требование:

Перед каждым предположением программа выводит визуальное представление предела предположения и количества сделанных предположений. Например, если загадочное слово - «кошка», Player2 начинает с 6 предположений, поэтому программа должна отобразить строку из 6 знаков # (представляющих предел как ######). Каждый раз, когда Player2 делает неверное предположение, под знаком # отображается 'x'.

Примечание : программа должна печатать после каждого пользователя ввод, а не после того, как все было введено с помощью сканера.

Когда игрок1 вводит загадочную фразу , игра заканчивается после удвоения длины загадочной фразы

Например: если загадочная фраза Собака , то игра заканчивается после 6 попыток или ввода от player2.

Вот почему выше в требовании написано " если загадочное слово - «кошка», Player2 начинает с 6 догадок "

Переменная" # "или" символ "зависит от удвоенной длины загадочной фразы, поэтому для Например, если загадочное слово - «собака», то этот «#» должен появиться 6 раз

Переменная «x» или «x» зависит от количества неверных предположений, сделанных player2 , например, если загадочное слово - «собака», а player2 угадает, скажем «копать» "тогда после предположения должен появиться" x ", означающий, что он / она сделал неверное предположение. Я просто хочу, чтобы "x" отображался неправильно, ничего больше, пожалуйста


Последнее примечание: Моя программа работает следующим образом: сначала player1 вводит загадочную фразу, а затем выводит список сколько букв во фразе, тогда player2 получит возможность ввести 5 букв, которые сообщают ему / ей, находятся ли буквы в загадочной фразе Затем player2 угадает слово, а затем оператор скажет ему / сразу, если слово правильное или неправильное.

Поэтому я хочу, чтобы "#" сначала появлялось после 5 букв, когда player2 только собирается угадать слово, а не буквы. Затем после каждого предположения, следующего за "x", должен появиться символ "#", в котором указывается сумма для каждого неправильного предположения только для слова

Я прикрепил изображение моего образца ввода / вывода:

enter image description here

Может показаться, что результат после ввода всего, но он должен быть после каждого ввода

MY КОД:

else if (option == 5){
                int counter = 1;
                int counter2 = 0;
                boolean go = true;
                for (int i = 0; i < 5; i++){
                    char letter = keyboard.next().charAt(0);
                    String r = "";
                    boolean found = false;
                    for (int x = 0; x < mysteryphrase.length(); x++){
                        char n = mysteryphrase.charAt(x);
                        if (n == letter){
                            r+=n;
                            found = true;
                        }else{
                            r+="*";
                        }
                    }
                    if (!found){
                        System.out.println(letter+" is not in the word");
                    }else{
                        System.out.println(r);
                        }
                    }
                     while (go){
                        String phrase = keyboard.next();
                        if (!phrase.equals(mysteryphrase)){
                            System.out.println("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");
                        }
                        if (counter2 == mysteryphrase.length()*2){
                            go = false;
                            System.out.println("\n"+"You made "+counter2+" incorrect guesses");
                            System.out.println("You have no more guesses");
                            System.out.println("You get 0 points");
                            System.out.println("You lost the game");
                    } 
                }
            }

Ответы [ 2 ]

1 голос
/ 07 мая 2020

Вы должны сделать что-то вроде этого String attempts="",fails=""

Пользователь1 входит: DOG

for(int i=0;i<phrase.length()*2;i++){
    attempts+="#";   //adding 2*x #
}

Итак, когда пользователь1 вводит загадочную фразу, попытки инициализируются соответствующим образом. Теперь User2, когда user2 вводит предположение, вы проверяете, соответствует ли оно фразе. Если нет

if(guess is wrong)
fails+="x";
if ((attempts != null) && (attempts.length() > 0)) {
attempts = attempts.substring(0, attempts.length() - 1);    //removes the last character
}

Дисплей будет таким

System.out.Println(attempts+fails);   //it will display like this: ###xx if user has two failed attempts

Для результатов:

if(attempts.length()==0)
{
//loose
}
if(guess matches the phrase)
//win

Помогло ли это? Если нет, то вы можете спросить, что мне не хватает.

0 голосов
/ 08 мая 2020

Исправленный код:

 else if (option == 5){
                int counter = 1;
                int counter2 = 0;
                boolean go = true;
                for (int i = 0; i < 5; i++){
                    char letter = keyboard.next().charAt(0);
                    String r = "";
                    boolean found = false;
                    for (int x = 0; x < mysteryphrase.length(); x++){
                        char n = mysteryphrase.charAt(x);
                        if (n == letter){
                            r+=n;
                            found = true;
                        }else{
                            r+="*";
                        }
                    }
                    if (!found){
                        System.out.println(letter+" is not in the word");
                    }else{
                        System.out.println(r);
                        }
                    }
                    String attempt = "";
                    String incorrect = "";
                    for (int q = 0; q < mysteryphrase.length()*2; q++){
                        attempt+="#";
                    }
                    System.out.println(attempt);
                     while (go){
                        String phrase = keyboard.next();
                        if (!phrase.equals(mysteryphrase)){
                            incorrect+="x";
                            System.out.println("The mystery word is not "+phrase);
                            System.out.println(attempt);
                            System.out.println(incorrect);
                            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");
                        }
                        if (counter2 == mysteryphrase.length()*2){
                            go = false;
                            System.out.println("\n"+"You made "+counter2+" incorrect guesses");
                            System.out.println("You have no more guesses");
                            System.out.println("You get 0 points");
                            System.out.println("You lost the game");
                    } 
                }
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...