Android 根据所玩游戏的数量调整游戏分数

Android 根据所玩游戏的数量调整游戏分数,android,math,logic,Android,Math,Logic,在基于计时乘法和的游戏中,我使用以下等式计算正确答案的百分比: //logic for the % of answers correct double divide = ((double) score / totalQuestions); int percentageScore = (int) Math.round(divide * 100); 我想以某种方式包括正确回答问题总数的权重。例如: 70/100 百分比与 7/10 但是70/100应该是一个更高的总分,因为他们能够在时间限制

在基于计时乘法和的游戏中,我使用以下等式计算正确答案的百分比:

//logic for the % of answers correct
double divide = ((double) score / totalQuestions);
int percentageScore = (int) Math.round(divide * 100);
我想以某种方式包括正确回答问题总数的权重。例如:

70/100 
百分比与

7/10
但是
70/100
应该是一个更高的总分,因为他们能够在时间限制内回答70个正确的问题,而不是7个


我应该怎么做?

有很多方法可以做到这一点。因为没有人知道你如何计算分数,你可以建立自己的逻辑

在你的例子中,你可以把这个百分比乘以分数。和/或每10个点加一个常数,比如2。所以50/100会给用户2*5(作为50+50/100的附加分数)


我也使用关税,解决的问题越多,分数越高。只是一些想法。

实现这一点的一种方法是在特定的时间范围内有一个目标数量的问题要回答,并对每个错误的答案进行惩罚。这看起来像:

double score(double correct, double attempted, double time, double target_rate) {
    // Validate correct <= attempted, attempted > 0, correct >= 0, time > 0, target_rate > 0
    double penalty = Math.min(correct, PENALTY_RATE * (attempted - correct));
    return (correct - penalty) / (time * target_rate);
}
双倍得分(双倍正确、双倍尝试、双倍时间、双倍目标率){
//验证正确的0,正确的>=0,时间>0,目标速率>0
双重惩罚=数学最小值(正确,惩罚率*(尝试-正确));
返回(正确-惩罚)/(时间*目标利率);
}

在这种情况下,<代码>时间<代码>是用户在回答任何问题时所花费的时间量(例如,分钟数)和<代码> TajyTrase是您希望用户在该时间单位的单个单元中正确无错误地回答的问题的目标数。代码>惩罚率是一个常量,可以是您决定的任何值,对于初学者来说可能是

0.25
。或者,它可以是您根据某些外部条件为函数提供的参数


这种方法的优点是可以根据用户的预期能力进行调整。

这真的很接近“为我完成这件事”,但事实并非如此,如果我能做到,我会知道的。我刚才说“接近”;)