【发布时间】:2017-07-31 05:16:26
【问题描述】:
我正在开发一款 Yahtzee 游戏,游戏的一部分是用户可以从 5 个骰子中选择他们希望重掷的骰子。除了编写大量 if if-else 语句之外,我真的不知道如何处理这个问题,但是必须有一种更有效的方法来重新滚动特定的骰子/骰子。我写了一个我想要完成的任务的 sn-p,它在我的实际代码中并不完全像这样,但希望它足以回答这个问题:)
#include<stdio.h>
int main(void)
{
int die1 = 0, die2 = 0, die3 = 0, die4 = 0, die5 = 0;
int *ptr_die1 = &die1, *ptr_die2 = &die2, *ptr_die3 = &die3, *ptr_die4 = &die4, *ptr_die5 = &die5;
int choice = 0;
int die[5] = { 0 };
for (int i = 0; i < 5; i++)
{
die[i] = rand() % 6 + 1;
}
printf("Die[1] = %d\n", die[0]);
printf("Die[2] = %d\n", die[1]);
printf("Die[3] = %d\n", die[2]);
printf("Die[4] = %d\n", die[3]);
printf("Die[5] = %d\n", die[4]);
choice = printf("Please select which die to reroll\n");
scanf("%d", &choice);
printf("%d\n", choice);
for (int i = 0; i < 5; i++)
{
die[choice-1] = rand() % 6 + 1;
}
printf("Die[1] = %d\n", die[0]);
printf("Die[2] = %d\n", die[1]);
printf("Die[3] = %d\n", die[2]);
printf("Die[4] = %d\n", die[3]);
printf("Die[5] = %d\n", die[4]);
return 0;
}
在这之后,我真的不知道如何更换模具,因为用户可能只想更改 1 个,或全部 5 个或两者之间的任何组合......
【问题讨论】:
-
用户的输入为您提供了数组的索引,对吗?因此,只需使用它来查找要更改的骰子值。
-
但是如果用户输入 2 和 5 会怎样?这就是让我感到困惑的地方,如果他们想更改 2 个或更多.. 以及我的 scanf 将如何更改以输入超过 1 个数字
-
嗯,这就是循环的用途。读取输入、更改值、读取下一个输入、更改值等
-
你听说过数组吗?你知道如何使用它们吗?嗯;是的,有
int die[5];。为什么你有 5 个dieN变量和 5 个ptr_dieN变量?除了使您的代码更长之外,它们提供的好处是什么? -
@JonathanLeffler 我只是在学习数组,我还在搞清楚它们