所以,我一直试图对这个游戏进行编程,用户必须输入他想要玩的分数。我想用数组做这个,所以我做了你在下面看到的(#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;
答案 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;
}
是本地的;如果你打算返回多个值,你也会遇到问题。