クラスプロジェクトでは、Javaでハングマンゲームを作成する必要があります(これはオブジェクト指向プログラミングから始まりますので、これが慣れてきています)、クラスファイルとメインファイルがあります。誰かが、私のJavaメソッドが、私がそれを期待していることをしていない理由を助けてくれますか?
すごくうまくいっていますが、クラスファイル内のメソッドの1つでは、特定の文字をすでに推測しているかどうかをプレイヤーに伝えたいものです。
基本的に、このメソッドは推測された文字を文字配列に追加するためにforループを使用し、プレーヤーが推測するたびにその文字が存在するかどうかをチェックします(存在する場合はループから抜けます)。そうでなければ、インデックス値は0です(これは未書き込みです)、それはそのインデックス値に推測された文字を書き出します。
私はコード内で自明ではないと思う唯一のことは、プレイヤーがまだ推測をしていなければ、最初の値を推測するからです。アレイ。
何か助けていただければ幸いです。誰かが自分のコードなどを改善する方法について意見があれば、私もそれを聞いて嬉しいです。本当にありがとう。 :)
public void makeGuess(char c) {
boolean alreadyGuessed = false, anyMatches = false;
matches = 0;
guesses++;
if (guesses == 1) {
guessedChars[0] = c;
}
for (int i = 0; i < guessedChars.length; i++) { //it goes through it and will see that it was already guessed
if (guessedChars[i] == c) {
alreadyGuessed = true;
break;
}
else if (guessedChars[i] != c && guessedChars[i] == 0) {
guessedChars[i] = c;
}
}
if (alreadyGuessed == false) {
for (int i = 0; i < word.length; i++) {
if (word[i] == c) {
anyMatches = true;
matches++;
disguisedWord[i] = c;
}
}
}
if (anyMatches == true) {
System.out.println("You guessed correctly!");
System.out.println("There were " + matches + " matches.");
}
else if (alreadyGuessed == true) {
System.out.println("You already guessed this letter, derp.");
}
else {
System.out.println("Sorry, that character is not in the word to be guessed.");
wrongGuesses++;
}
// for (int i = 0; i < guessedChars.length; i++) {
// System.out.print(guessedChars[i] + " ");
// }
}
mainメソッド:推測カーディナル文字に対応するブール値またはchar配列(いずれかを使用することで推測を追跡する
import java.util.Scanner;
class HangmanDemo {
public static void main(String[] args) {
//Object initialization
Scanner keyboard = new Scanner(System.in);
Hangman word = new Hangman("jordan");
//Variable declaration
char letterGuess;
int limit;
//Interact with user
System.out.print("What would you like the limit of guesses to be: ");
limit = keyboard.nextInt();
//BEGIN ZE GAME
while (word.isFound() == false && word.getWrongGuessCount() <= limit) {
System.out.println();
System.out.print("Letter guess: ");
letterGuess = keyboard.next().charAt(0);
word.makeGuess(letterGuess);
System.out.println(word.getDisguisedWord());
}
if (word.getGuessCount() == limit) {
System.out.println("\nSorry, too many guesses.");
}
else {
System.out.println("\nCongratulations! You succesfully solved the word!");
}
}
}
あなたの問題は何ですか?あなたはそれに近づくために何をしましたか? – Nicolas78
#homeworkのような匂いがします。それのためのタグがあります。そして、私はポストのタイトルを変更する衝動を感じるが、理由は@ Nicolas78に言及している理由を考え出すのは難しい。 – Romain
私が提案する最初のことは、あなたのmakeGuessメソッドをいくつかのメソッドに分割することである。別々の 'hasMadeGuess'メソッドと' makeNewGuess'メソッドを記述してみてください。私はこれがあなたが持っているものを簡単に改善し、あなたが見ている間違った振る舞いを整理するのに役立つと思います。 – Peter