棋盘游戏程序中的数组

时间:2015-06-13 20:36:43

标签: c arrays

所以,我一直试图对这个游戏进行编程,用户必须输入他想要玩的分数。我想用数组做这个,所以我做了你在下面看到的(#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); } } } } )。

但不知怎的,我得到了,当我使用得分[relplayers(数组中的计数器,所以程序通过转弯)] =得分[relplayers](旧得分)+抛出(掷骰子的价值);我不知道为什么这不起作用。

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;
        }

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

var json = config.Formatters.JsonFormatter;
        json.SerializerSettings.PreserveReferencesHandling =
            Newtonsoft.Json.PreserveReferencesHandling.None;

1 个答案:

答案 0 :(得分:2)

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

我发现了以下问题:

您使用 else if(progress<125){ var angle = -90 + (progress/100)*360; $(".animate-0-25-b").css("transform","rotate("+angle+"deg)"); } else if(progress>=125 && progress<150){ var angle = -90 + ((progress-25)/100)*360; $(".animate-0-25-b").css("transform","rotate(0deg)"); $(".animate-25-50-b").css("transform","rotate("+angle+"deg)"); } else if(progress>=150 && progress<175){ var angle = -90 + ((progress-50)/100)*360; $(".animate-25-50-b, .animate-0-25-b").css("transform","rotate(0deg)"); $(".animate-50-75-b").css("transform","rotate("+angle+"deg)"); } else if(progress>=175 && progress<=200){ var angle = -90 + ((progress-75)/100)*360; $(".animate-50-75-b, .animate-25-50-b, .animate-0-25-b").css("transform","rotate(0deg)"); $(".animate-75-100-b").css("transform","rotate("+angle+"deg)"); } 错误。例如。如果scanf是整数, allscore应为scanf("%d", allscore);scanf("%d", &allscore);与此处的scanf不同)。

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

如果您没有充分的理由在main中使用srand,请不要这样做。这是exit(EXIT_FAILURE);,我认为你的情况不是失败的。使用exit。在main的末尾,也应该返回(对于循环完成而不被中止的情况)。

return EXIT_SUCCESS;badfields中,你做的事情非常奇怪。

goodfields

这甚至应该怎样做?如果你想要一个10个随机数的数组,初始化是错误的,更重要的是你返回一个地址而不是一些生成的随机数。下一个问题是int badfields () { ... int numbers[10] = {rand() % abscore + 1}; return numbers; } 是本地的;如果你打算返回多个值,你也会遇到问题。