Код: Выделить всё
public class Game {
private char[] guesses;
private int numGuesses;
private int numWrong;
private String secret;
private String display;
private static final String[] words = {"put", "word", "here"};
public Game() {
int index= (int) (Math.random() * words.length);
secret= words [index];
guesses = new char[26];
numGuesses=0;
numWrong=0;
display = "";
for (int i = 0; i < secret.length(); i++) {
display += "-";
}
}
public Game(String word) {
secret=word;
guesses = new char[26];
numGuesses=0;
numWrong=0;
for (int i = 0; i < secret.length(); i++) {
display += "-";
}
}
public boolean guess(char letter) {
for(int i=0; i< numGuesses; i++) {
if (guesses[i] == letter) {
return false;
}
}
boolean correct = false;
String newDisplay = "";
for (int i = 0; i < secret.length(); i++) {
if(secret.charAt(i) == letter ) {
newDisplay += letter;
correct = true;
} else {
newDisplay += display.charAt(i);
}
}
display = newDisplay;
if (!correct) {
numWrong++;
}
guesses [numGuesses++] = letter;
return correct;
}
public String getWord() {
return secret;
}
public String getGuesses() {
String allGuesses = "";
for (int i = 0; i < numGuesses; i++){
allGuesses += guesses[i];
}
return allGuesses;
}
public boolean gameOver() {
return numWrong >= 7 || isWordGuess();
}
private boolean isWordGuess() {
for (int i = 0; i < secret.length(); i++) {
if (display.charAt(i) == '-') {
return false;
}
}
return true;
}
@Override
public String toString() {
String ret = "";
if (this.numWrong == 0) {
ret +=
" ______\n"+
" |\n"+
" |\n"+
" |\n"+
" |\n"+
" |\n"+
" ______\n";
} else if (this.numWrong == 1) {
ret +=
" ______\n"+
" | O\n"+
" |\n"+
" |\n"+
" |\n"+
" |\n"+
" ______\n";
} else if (this.numWrong == 2) {
ret +=
" ______\n"+
" | O\n"+
" | |\n"+
" |\n"+
" |\n"+
" |\n"+
" ______\n";
} else if (this.numWrong == 3) {
ret +=
" ______\n"+
" | O\n"+
" | /|\n"+
" |\n"+
" |\n"+
" |\n"+
" ______\n";
} else if (this.numWrong == 4) {
ret +=
" ______\n"+
" | O\n"+
" | /|\\\n"+
" |\n"+
" |\n"+
" |\n"+
" ______\n";
} else if (this.numWrong == 5) {
ret +=
" ______\n"+
" | O\n"+
" | /|\\\n"+
" | |\n"+
" |\n"+
" |\n"+
" ______\n";
} else if (this.numWrong == 6) {
ret +=
"YOU LOSE! \n"+
" ______\n"+
" | O\n"+
" | /|\\\n"+
" | |\n"+
" | /\n"+
" |\n"+
" ______\n";
} else {
ret +=
" YOU LOSE!\n"+
" ______\n"+
" | O\n"+
" | /|\\\n"+
" | |\n"+
" | / \\\n"+
" |\n"+
" ______\n";
}
ret += " You have guessed these letters: " + getGuesses() + "\n";
ret += "Secret word: " + display + "\n";
if (isWordGuess()) {
ret += "YOU WIN!!";
}
return ret;
секретное слово — яблоко, и как только я ввел букву, которой нет в слове, оно показывает это
обычно в коде должны отображаться только тире и добавляться к палачу, если они ошиблись с буквой, но я не знаю, где мой код ошибся:(
Я бы очень ценю помощь. Спасибо!
Подробнее здесь: https://stackoverflow.com/questions/792 ... owing-null
Мобильная версия