2015-10-19 38 views
-2

我被分配创建一个猜谜游戏,在这里你会得到一个星号的秘密词,并有5次尝试猜出正确的词。他们一次输入一封信,这些信件在单词中显示。与hang子手不同,每一回合都会计数,而不是每次他们选择一个不在单词中的字母。类只需要一个默认的构造函数这是我到目前为止的代码,这里是司机:http://pastebin.com/35T9B4wM秘密文字游戏

public class SecretWord { 
private String secretWord; 
private String hintWord; 
private int numberOfTurns; 

public SecretWord() 
{ 
    this.secretWord = "fruit"; 
    this.numberOfTurns = 0; 
    for(int i=0;i<secretWord.length();i++) 
    { 
     hintWord+="*"; 
    } 
} 
public String getSecretWord() 
{ 
    return this.secretWord; 
} 
public String getHintWord() 
{ 
    return this.hintWord; 
} 
public int getNumberOfTurns() 
{ 
    return this.numberOfTurns; 
} 
public void setSecretWord() 
{ 
    this.secretWord = "fruit"; 
} 
public void setHintWord() 
{ 

} 
public void setNumberOfTurns(int i) 
{ 
    this.numberOfTurns = 5; 
} 
public void guessLetter() 
{ 

} 

} 

我只是不明白什么应该在存取或增变去。或者在guessLetter变量中,只要在秘密字中找到字母,那么该字母就会替换提示字中的星号。 以下是可能有所帮助的说明列表。

  • 这个类有三个实例变量
  • secretWord中:用户 要猜
  • hintWord词:用猜字母的单词透露
  • numberOfTurns:保持猜测
  • 数量的轨道
  • 该课程只需要一个默认构造函数
  • 您设置密码
  • 圈数0
  • 的提示字默认值是使用每一个字母这是在秘密字
  • 访问者的每一个实例变量
  • 变异符的有效值每个实例变量CHECK星号(*)构建!
+0

什么似乎是问题? – gonzo

+0

问题是,我卡住了,真的不知道该放入增变器(有效值)的内容。此外,我坚持要在guessLetter变量中放置什么,它将正确的猜测字母代替星号。 @gonzo – ChristianN

+0

那么你编码的mutators目前看起来很好。您只需在将其设置为任何实例变量之前验证该值。例如,在你的'setNumberOfTurns'上,什么类型的值在这里是无效的?提示:我们可以有负转数吗? – gonzo

回答

0

是的,你是非常接近的逻辑。之后你只需要更新你的hintWord。像这样的东西应该可以做到。

hintWord = ""; 
for (int i = 0; i < secretWord.length(); i++){ 
    if (secretWord.charAt(i) == guess){ //Check if we found anything 
     //found = true; We do not need this variable since we already know if we found something 
     correctLetters[i] = guess; 
    } 
    hintWord += correctLetters[i]; 
} 

只要确保您的correctLetters在开始时设置正确。你可以在你的setHintWord中设置它。就像这样:

public void setHintWord(){ 
    correctLetters = new char[secretWord.length()]; 
    for(int i=0;i<secretWord.length();i++) 
    { 
     hintWord+="*"; 
     correctLetters[i] += '*'; 
    } 
} 

如果您不希望跟踪另一实例变量(因为你的指令说只使用3),你可以做这样的事情有一个临时String

public void guessLetter(char guess){ 
    String tempHintWord = ""; 
    for (int i = 0; i < secretWord.length(); i++){ 
     if (secretWord.charAt(i) == guess){ //Check if we found anything 
      //found = true; We do not need this variable since we already know if we found something 
      tempHintWord += guess; 
     }else{ 
      tempHintWord += hintWord.charAt(i); 
     } 
    } 
    hintWord = tempHintWord; 
} 
+0

我想出了一切。谢谢您的帮助! – ChristianN

+0

@ChristianN随时接受我的答案,如果它帮助你把所有东西都弄清楚。谢谢。 – gonzo