的经验,水平表

本文关键字:水平 经验 | 更新日期: 2023-09-27 18:12:01

我正在做一个小型的自学项目,使用游戏的EXP/Level计算器,我只是需要一点建议。

我想知道存储关卡(1,2,3至110)和该关卡的经验要求的最佳存储方法是什么。我希望能够通过经验值搜索关卡,例如,如果关卡9是1000 XP,而关卡10是2000 XP,我将能够通过输入1000 - 1999的经验值来搜索关卡9。

到目前为止,我已经研究了SQL/列表/字典/数组,似乎都很好,但我找不到执行我描述的操作的东西。

的经验,水平表

由于级别的数量最多只能达到110,因此您可以将范围保持在有序列表或数组中,如下所示:

   0
 100
 200
 400
 600
 800
1000
1300
1600

等等(当然这些数字是我编的!)

然后你可以通过线性搜索列表(这可能足够快)来搜索特定XP值的关卡,或者如果你真的需要,你可以使用Array.BinarySearch()找到最近的关卡,并检查两边的值,看看XP落在哪个波段。

关卡将只是找到的波段的索引+ 1(因为关卡从1开始,而不是0)。

线性搜索关卡的经验值:

int[] xpArray = new [] { 0, 100, ... etc }// The list as shown above
int targetXP = 850;
int level = 0;
while ((level < xpArray.Length) && (targetXP > xpArray[level]))
    ++level;
// Now you have the right level.

显然,这只是一个简单的概述,让你开始!此外,你可能需要稍微调整一下;我不知道你们的具体要求。例如,0 XP的角色是否拥有0级?

从这里得到的关键是搜索数字列表的概念,并使用您找到的波段索引作为级别的基础,以及您只需要为每个波段存储一个数字的事实。你不需要为每个波段存储最小值和最大值,也不需要存储关卡。这些值是隐式的。

我使用Array.BinarySearch()来加快速度,作为读者的练习…div;)