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