Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 1-2-3星级奖励算法_Algorithm - Fatal编程技术网

Algorithm 1-2-3星级奖励算法

Algorithm 1-2-3星级奖励算法,algorithm,Algorithm,我想做的是根据球员的表现确定每个级别的明星数量。(1-2-3颗星奖)这将取决于球员到达的地区。我知道如何奖励明星,但跟踪这一切给我带来了麻烦。首先让我们假设一名玩家玩2级游戏,并因其表现获得1颗星。然后,在稍后的时间,他/她返回到该级别并获得2颗星。我希望该特定场景的星星数更新为两颗星,同时只向totalStarCount添加一颗星(这次他/她额外获得的一颗星) 我最初的计划是设置变量: OldStarCount NewStarCount TotalStarCount 然后,当一名玩家到达sa

我想做的是根据球员的表现确定每个级别的明星数量。(1-2-3颗星奖)这将取决于球员到达的地区。我知道如何奖励明星,但跟踪这一切给我带来了麻烦。首先让我们假设一名玩家玩2级游戏,并因其表现获得1颗星。然后,在稍后的时间,他/她返回到该级别并获得2颗星。我希望该特定场景的星星数更新为两颗星,同时只向totalStarCount添加一颗星(这次他/她额外获得的一颗星)

我最初的计划是设置变量:

OldStarCount
NewStarCount
TotalStarCount
然后,当一名玩家到达say region1并获得一颗星时,NewStarCount将设置为一,然后

TotalStarCount = TotalStarCount + (NewStarCount - OldStarCount);
Then update OldStarCount = NewStarCount;
Set NewStarCount = 0;
Move On to next Scene;

我的方法正确吗?任何帮助都将不胜感激。

您可以得到这样的帮助

int result = 0;
int totalStars = 0;
int[] starCounts = new int[NumberOfRegions};
...
currentRegion = 42;

result = play(currentRegion);
if(result > starCounts[currentRegion]){
    totalStars += result - starCounts[currentRegion];
    starCounts[currentRegion] = result;
}

这只是你能做的一个例子。这显然存在可伸缩性问题(当您想添加新区域等时会发生什么情况),但您明白了要点。

根据您拥有的级别,您可以保留一个全星计数列表,并动态计算
TotalStarCount=sum(StarCounts)
。这样做的好处是不需要你追踪每个关卡的上一个和新的星星数。嗯,如果一个玩家的分数低于他或她的上一次尝试,那么什么也不做,如果他们的分数更高,更新分数并继续?是的,忘了提这一点
StartCounts[level\u id]=max(StartCount[level\u id],new\u result)
,或者类似的东西。只是一个旁注,但在大多数语言中,它被认为是标准的,让变量名以小写字母FWIW开头。是的,对不起,我只是在匆忙键入,通常它类似于totalStarCount。。。等等。这很好,但它总是只有3个区域,所以我不需要担心有更多的区域。“我不需要担心有更多的区域”。著名的最后一句话:)哈哈,我知道这听起来很愚蠢的游戏编程,但这只是一个简单的游戏,由地区,1,2和3星标记。我不会奖励任何更高的明星数量,因此不需要任何更高的地区数量=)