我想知道如果有人满足程序中的条件,是否有人可以引导我如何更改数组列表中的值。
我的意思是,如果用户不想保留骰子的值,我只想掷骰子。
所以我创建了这个函数来掷骰子:
int roll[numDice];
for(int i = 0; i <= numDice; i++){
roll[i] = rand()%6+1;
}
这会给我随机数字,但程序中有很多骰子。
所以现在我要求用户保留最常用的号码(制作Yahtzee)。
所以我做了一串if if else:
if (usersKeep == roll[1]){
cout << "we will keep this dice 1";
}
所以我想在这个函数中保留这个值(没有它滚动)然后在另一个其他掷骰子的其余部分。但是我不知道改变其他骰子价值或保持骰子的逻辑。
答案 0 :(得分:1)
你不应该测试数组元素的值,你应该测试索引(因为它们可能在多个骰子上有相同的滚动)。然后只使用if/else
if (usersKeep == i) {
cout << "We will keep this die " << i << '\n';
} else {
cout << "Rolling die " << i << '\n';
roll[i] = rand() % 6 + 1;
}
请注意,此usersKeep
变量只允许他们保留一个骰子,但是Yahtzee允许您选择多个骰子来保留。您可以使用std::set<int>
来保存列表,并测试i
是否是该集合的成员。
答案 1 :(得分:0)
如果它真的是一个yahtzee,你有一个固定数量的骰子,5如果我记得很清楚。然后你需要5个int。
但作为一种标记是否要保留骰子的方法,你可以使用一种结构。
typedef struct dice {
int value;
int keep;
} dice;
然后有一个骰子阵列。
dice dices[5];
首先设置dices[n].keep = 0
然后在循环中添加一个条件。
for(int i = 0; i < 5; i++) {
if (roll[i].keep == 1) {
roll[i].value = rand()%6+1;
}
}
当用户决定保留骰子时
if (...) //depends on how you want to ask the user
dices[i].keep = 1;
希望有所帮助。