gpt4 book ai didi

c - 棋盘游戏程序中的数组

转载 作者:太空宇宙 更新时间:2023-11-04 08:25:14 25 4
gpt4 key购买 nike

所以,我一直在尝试编写这个游戏,用户必须在其中输入他想玩的分数。我想用一个数组来做到这一点,所以我做了你可以在下面看到的 (score[4] = {0, 0, 0, 0})。

但不知何故,当我使用 score[relplayers(数组中的一个计数器,因此程序通过回合)] = score[relplayers](旧分数)+ throwed(我掷出的骰子的值)时,我得到了;我不知道为什么这不起作用。

#include <stdio.h>

#include <stdlib.h>

#include <time.h>



int throwing () {

srand(time(NULL));

int value = rand() % 6 + 1;

return value;

}



int main() {

int abplayers, relplayers, thrown, playersshown, abscore, rounds;
printf("Enter the number of fields: ");
scanf("%d", abscore);
int score [4] = {0, 0, 0, 0};

for (rounds = 0; rounds < 50; rounds++)
{
for(relplayers = 0; relplayers < 4; relplayers++)

{

int playershown = relplayers + 1;
getchar();
thrown = throwing();
printf("\nPlayer nº%d threw a %d", playershown, thrown);
score[relplayers] = score[relplayers] + thrown;
printf("\nPlayer nº%d is in %d field", playershown, score);
if (score[relplayers] >= abscore)
{
printf("Player nº%d won", playershown);
exit(EXIT_FAILURE);
}
}

}
}

该程序的另一个问题是特殊字段。我想包括这些领域,以便玩家被困在这些领域中或在这些领域中得到提升。我曾尝试将它放入我的程序中,但它似乎不起作用。

int enter() {
int allscore;
printf("Number of fields: ");
scanf("%d", allscore);
return allscore;
}

int badfields () {
int abscore;
srand(time(NULL));
abscore = enter();
int numbers[10] = {rand() % abscore + 1};
return numbers;
}
int goodfields () {
int abscore;
srand(time(NULL));
abscore = enter();
int fields[10] = {rand() % abscore + 1};
return fields;
}

int main()
...




if (score[relplayers] == goodfields())
{
printf("Player %d is boosted 5 fields backwards", playershown);
score[relplayers] = score[relplayers] - 5;
}
if (score[relplayers] == goodfields())
{
printf("Player %d is boosted 5 fields forwards", playershown);
score[relplayers] = score[relplayers] + 5;
}

最佳答案

这是 C,不是 C++。我假设你真的想要 C。

我发现了以下问题:

您使用的 scanf 有误。例如。如果 allscore 是一个整数,scanf("%d", allscore); 应该是 scanf("%d", &allscore);(scanf 不同于 printf 这里)。

srand 为 PRNG 播种。在许多情况下,这应该在整个程序中只完成一次。 在每个函数中使用随机数。改变它,因为它会影响你的数字的随机性。

如果您没有充分的理由在 main 中使用 exit(EXIT_FAILURE);,请不要这样做。它是 exit,在我看来,您的案例并不失败。使用 return EXIT_SUCCESS;。在 main 的末尾,也应该有 return (对于循环完成而没有中止的情况)。

badfieldsgoodfields 中,您正在做一些非常奇怪的事情。

int badfields () {
...
int numbers[10] = {rand() % abscore + 1};
return numbers;
}

这到底应该做什么?如果你想要一个包含 10 个随机数的数组,那么初始化是错误的,更重要的是你返回的是一个地址而不是一些生成的随机数。下一个问题是 numbers 是本地的;如果您打算返回多个值,您也会在这里遇到问题。

关于c - 棋盘游戏程序中的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30823297/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com