能力得分函数C的随机输出

时间:2017-03-06 21:33:31

标签: c

我写的代码看起来很好,没有提供编译错误或分段错误,但它在输出文件中提供了完全随机的数字。

int reroll()
{
    return rand() % 5 + 2; // range of 2-6
}

int roll()
{
int i;
int rolls[4];
int sum = 0, low = 6;
for(i = 0; i < 4; i++)
{
    rolls[i] = rand() % 6 + 1; // range of 1-6
    while(rolls[i] == 1)
    {
        rolls[i] = reroll();
    }
}

for (i = 0; i < 4; i++)
{
    if (low > rolls[i])
        low = rolls[i];
}

for (i = 0; i < 4; i++)
{
    sum += rolls[i];
}

sum = sum - low;

return sum;
}

void abScores()
{
int i, j, choice, abSc[6], abil[6];
char abS[6][5] = {"Str", "Dex", "Con", "Int", "Wis", "Cha"};
FILE *fp;
FILE *fo;
fp = fopen("csheet.txt", "a");
fo = fopen("att.txt", "r");

printf("Would you like your own ability scores, or the basic ability scores?\n");
printf("1 for own, 2 for basic\n");
scanf("%d", &choice);

if (choice == 1)
{
    for (i = 0; i < 6; i++)
    {
        abSc[i] = roll();
        printf("Ability score %d: %d\n", i+1, abSc[i]);
    }
}
else if (choice == 2)
{
    abSc[0] = 15;
    abSc[1] = 14;
    abSc[2] = 13;
    abSc[3] = 12;
    abSc[4] = 10;
    abSc[5] = 8;
    for (i = 0; i < 6; i++)
        printf("Ability score %d: %d\n", i+1, abSc[i]);
}

for (i = 0; i < 6; i++)
{
    printf("What score would you like for %s?\nPlease use each score only once.\n", abS[i]);
    for (j = 0; j < 6; j++)
    {
        printf("%2d\n", abSc[j]);
    }
    scanf("%d", &abil[j]);
    system("cls");
}

for (i = 0; i < 6; i++)
    fprintf(fp, "%s: %d\n", abS[i], abil[i]);
}

我试图制作一个相当基本的D&amp; D角色生成器,但是这个函数abScores比其他11个函数组合引起了更多的问题。

0 个答案:

没有答案