【发布时间】:2014-05-06 16:59:30
【问题描述】:
我正在学习 java,我正在编写一个客户端-服务器刽子手游戏,客户端与服务器联系,服务器用随机词响应。然后客户用星号覆盖这个词。例如,如果单词是 java,用户将看到 ****。然后用户猜测一个字母,我坚持的部分是当用户猜错字母时剩余的猜测数量如何减少。比如:
客户端将单词“NEW”发送到服务器,服务器以随机单词的长度进行响应,程序将其转换为星号。假设这个词是“java”。
****
用户猜字母“a”。
然后服务器会响应如下内容:
假
真的
假
真的
这是theValue的值
我编写程序的打印方式:
*a*a
这就是我想要的,但是,我的程序减去了两次猜测,因为服务器返回的 4 个布尔值中有 2 个是假的,即使用户猜到了一个正确的字母。有没有办法查看所有布尔值,如果没有一个是真的,那么减少猜测?
代码如下:
public void evaluateGuess() {
try {
for (int i = 0; i < wordAsItIs.length(); i++) {
String word = in.readLine();
boolean theValue = Boolean.parseBoolean(word);
ArrayList<Boolean> booleans = new ArrayList<Boolean>();
booleans.add(theValue);
System.out.println(booleans);
if (booleans.contains(true) && wordAsItIs.charAt(i) == '*') {
wordAsItIs.setCharAt(i, playersGuess);
}
if (!booleans.contains(true))
guessesRemaining--;
}
displayGame();
} catch (IOException e) {
e.printStackTrace();
}
}
【问题讨论】:
-
使用布尔值来判断它是否被遗漏。一开始,初始化为假,如果一个是正确的声明它为真。如果为假,则在循环结束时减去未命中
-
@ZachSaucier 哦,有道理!非常感谢!
标签: java