コードはまだ完成していませんが、いくつか問題がありました。これは私の現在のコードです:
public class Engine
{
public static void main(String[] args)
{
String word = JOptionPane.showInputDialog("Player 1! Please enter a word.");
JOptionPane.showMessageDialog(null, "Switch to Player 2. It is time to play hangman!");
char[] letters = word.toCharArray();
String[] underscores = new String[word.length()];
for(int i=0; i<=word.length()-1; i++)
{
underscores[i]="_ ";
}
StringBuilder builder = new StringBuilder();
for (int i=0; i<word.length(); i++)
{
builder.append(underscores[i]);
}
int mistakes = 0;
while(mistakes!=7)
{
String answer = JOptionPane.showInputDialog(null, "Please guess a letter.\n" + "Mistakes = " + mistakes + " of 7!\n\n" + builder.toString() + "\n\n");
char guess = answer.charAt(0);
for(int i=0; i<=word.length()-1; i++)
{
if(guess==letters[i])
{
underscores[i] = answer;
for (int x=0; x<word.length(); x++)
{
builder.append(underscores[x]);
}
}
}
}
}
}
私が抱えている問題は、StringBuilder 部分と .append() にあります。
たとえば、単語が「帽子」の場合。次のように、3 つのアンダースコアが表示されたウィンドウが表示されます。
「h」を推測すると、次のように変わります。
_ _ _ h _ _
それ以外の
h _ _
さらに、次に「t」を当てると、次のようになります。
_ _ _ h _ _ h _ t
配列の変更された要素を既存の配列に追加します。append メソッドが原因であると確信していますが、代替手段についての知識はありません。