Это проект, который у меня есть для класса. Я все еще новичок, так что этот topi c должен охватывать только строки, циклы и массивы. Если вы не знакомы с игрой, расширенная версия это . Однако передо мной стоит более простая версия. Вот правила этой версии.
Программа начинается с того, что первый игрок, создатель кода, просит ввести шаблон, который будет использоваться для игры. Длина шаблона составляет 4 буквы, и каждая буква представляет цвет (R - красный, G - зеленый).
Чтобы упростить игру, можно использовать только два цвета: красный и зеленый. Так, например, пользователь может ввести RRGR для обозначения Red Red Green Red или GGGG для представления Green Green Green Green. Для упрощения можно предположить, что шаблон будет состоять только из R и / или G, создатель кода не будет вводить неправильные символы или символы. Однако вы должны убедиться, что создатель кода ввел ровно 4 символа (что его длина составляет 4 символа). не 5 и не 3). Если они этого не делают, вам нужно подсказать, пока они не делают. Создатель кода может вводить прописные или строчные буквы, и вы сможете справиться с этим.
Программа также запрашивает максимально допустимое количество предположений. Теперь игра может начаться. Теперь нарушитель кода угадывает шаблон, чтобы попытаться выиграть игру. Если они не могут сделать это по максимальному количеству догадок, они проигрывают. Чтобы помочь взломщику кода, ваша программа будет давать отзывы после каждого предположения. В частности, для каждого цвета, который находится в правильном месте, он будет показывать черный колышек. Для каждого цвета, который не находится в правильном местоположении, но находится в образце, он покажет белый колышек. Посмотрите примеры взаимодействий для примеров этого. Подробные требования и советы:
Вот пример того, как это должно работать:
Code maker, please enter a pattern of 4 colors (the possible colors are R=red and G=green):
GGGR
What is the maximum number of guesses allowed for this game?
4
Okay, now it's the code breaker's turn. You have 4 chances to guess the pattern. Enter a guess:
RRRR
The code maker sets out 1 black pegs and 0 white pegs.
Enter a guess:
GGRG
The code maker sets out 2 black pegs and 2 white pegs
Enter a guess:
GGGR
You got the pattern! The code breaker wins!
ГДЕ Я ТАК ДАЛЬШЕ
Сначала я хочу вычислить черные колышки. Лучший способ сделать это - преобразовать строковый ввод в массивы, используя циклы FOR. Существует два основных массива: исходный шаблон, который необходимо решить, и массив попыток для всех попыток, предпринятых пользователем. Затем мы используем FOR l oop для сравнения содержимого массива и добавляем черный колышек каждый раз, когда они совпадают при попытке.
Это код, на котором я сосредоточен (вычисление черных выводов). Моя проблема до сих пор состоит в том, что я не могу заставить выводы соответствовать каждому содержимому массива. По сути, это всегда приводит к 4 контактам, хотя бывают случаи, когда это должно быть 3 или 2 контакта. Если необходимо, весь незавершенный код находится ниже этой части.
String pattern = keys.nextLine().toUpperCase(); // this is used to enter the original pattern
String attempt = keys.nextLine().toUpperCase(); // this is to enter an attempt
String pattern_array [] = new String [5];
String attempt_array [] = new String [5];
int i;
int black_pegs = 0;
for (i=0; i<pattern.length(); i++) {
pattern_array[i] = pattern.substring(i,(i+1));
}
for ( i=0; i<attempt.length();i++) {
attempt_array[i] = attempt.substring(i,i+1);
}
for (int x=0; x<4; x++) {
if (pattern_array[i]==attempt_array[i]) {
black_pegs++;
}
}
Это мой код того, что у меня есть до сих пор (не стесняйтесь взглянуть и указать на другие вещи, если вы будете sh)
import java.util.Scanner;
public class CopyOfAssignment5 {
public static void main(String[] args) {
Scanner keys = new Scanner(System.in);
System.out.println("Codemaker, please enter a pattern of 4 colors (the possible colors are R=red and G=green");
String pattern = keys.nextLine().toUpperCase();
System.out.println("What is the maximum number of guesses for this game?");
int number_of_guesses = keys.nextInt();
int turns = number_of_guesses + 1;
System.out.println();
System.out.println();
System.out.println();
System.out.println();
System.out.println("Okay, now its the codebreaker's turn. You have " + number_of_guesses
+ " chances to guess the pattern");
System.out.println("Enter a Guess:");
int white_pegs = 0, black_pegs = 0;
String pattern_array[] = new String[5];
String attempt_array[] = new String[5];
String attempt = null;
while (turns > 0) { // while turns are not zero
attempt = keys.nextLine().toUpperCase(); // then keep displaying the scanner input for an attempt.
turns--;
}
if (attempt.equals(pattern)) { // if you get the correct patter, then you win. Loops stops.
System.out.println("You got the pattern! The codebreaker wins!");
}
if (turns == 0 && !(attempt.equals(pattern))) {
System.out
.println("The codemaker sets out " + black_pegs + " black pegs and " + white_pegs + " white pegs.");
System.out.println("Sorry, that was your last chance. You lost.");
} else if (turns < turns) {
System.out
.println("The codemaker sets out " + black_pegs + " black pegs and " + white_pegs + " white pegs.");
System.out.println("Enter a Guess:");
}
int i;
for (i = 0; i < pattern.length(); i++) {
pattern_array[i] = pattern.substring(i, (i + 1));
}
for (i = 0; i < attempt.length(); i++) {
attempt_array[i] = attempt.substring(i, i + 1);
}
for (int x = 0; x < 4; x++) {
if (pattern_array[i] == attempt_array[i]) {
black_pegs++;
}
}
}
}