我正在开发类似Gambler的游戏来练习套接字编程,我遇到了一个小问题。 我有一个游戏,玩家轮流获得一个随机数。这些数字加在一起以获得玩家得分。我试图这样做,如果你举一个7 - 你不能再得到它。 到目前为止我一直在努力: 编辑:
private void pick() {
Number r = new Number(getNumber(), new Vector2(200, 10));
myNumbers.add(r);
sendMessage(output, "Number" + r.value);
}
private int getNumber() {
int n = random.nextInt(10);
while(numberHasBeenPicked(n)) {
n = random.nextInt(10);
}
return n;
}
private boolean numberHasBeenPicked(int value) {
if(numbersUsed.contains(value))
return true;
else
return false;
}
此外,sendMessage()
函数会将数字添加到服务器和客户端列表中的numbersUsed
,以便两个程序都知道已经执行了哪些
/编辑
但我没有得到我正在寻找的结果。我不知道还有什么可说的,因为我得到的错误基本上是我仍然得到已被使用的数字,即使我确定它们已被放入numbersUsed
列表。
任何帮助都会受到赞赏,如果没有信息,我很抱歉。
答案 0 :(得分:0)
while(!numberHasBeenPicked(n))
你应该删除!
,因为当条件为真时,所以选择了数字,你想要选择另一个。并且通过!
你声明:当错误的数字被挑选时(所以它没有),选择另一个。好像你想要实现相反的目标
答案 1 :(得分:0)
@SotiriosDelimanolis提到改变程序的设计会更好。您可以将所有生成的值放入ArrayList
,并在生成新的随机数时检查此ArrayList
是否包含新数字。您可以使用containsAll()