[持续更新]关于地下城 之 打怪经验 计算深究
本帖最后由 mrjulow 于 2015-7-17 20:16 编辑此游戏的最高等级为10级(a1,a2在实际游戏运算中是作为局部变量使用)
第一种情况就是 怪物等级(Glevel)<= 玩家等级(Wlevel)那经验就是等于怪物自身等级
第二种情况就是 分为 以下 2方面就是怪物等级 (Glevel)大于玩家等级 (Wlevel)(玩家等级为奇数和玩家等级为偶数时计算打怪公式)
提前说明几点:
1:玩家等级为奇数时,相差等级(怪物与玩家)最大为 9级;玩家等级偶数时,相差等级(怪物与玩家)最大为8级
2:以下定义的数据和类型在实际游戏中或许有偏差,但是算法是一样的!
3:关于语言 是参考 C++ 语言;
int a1= 0,a2=0;//a2是作为打怪所得的经验
int Glevel ,Wlevel;//怪物等级和玩家等级
int i,j,m;//循环变量
if(Wleve>=1)
{
a1=4;
if(Glevel-Wlevel==1) a2= a1;
else
{
j=Glevel-Wlevel;
for(i=1;i<j;i++)
{
m=2*i+1;
a2= a1+m;
a1 =a2;
}
}
}
if (Wlevel++) a1++;//注意最后这一句 ,这是变量 表示 当玩家等级上升时候,这个初始值a1也会随着等级的提升而自加 1;【注意这点】
[边打怪 边解说]
诸如 我现在 1级 ,然后之前 我打了一个同 1级的怪 所以我现在是1点的经验 [如下图] 我现在要打5级的怪 那是多少经验?
看看是如何计算经验的?
如果是这种情况是话 是执行 上面的判断为奇数的 里面语句
GLevel = 5级 ,Wlevel= 1级
所以是执行
else
{
j=Glevel-Wlevel;
for(i=1;i<j;i++)
{
m=2*i+1;
a2= a1+m;
a1 =a2;
}
j 的初始值是4 所以循环是从1 到3 ,执行了3次内循环(注意 :不是小于等于),
所以第一次 循环 a2 = a1+m (a1的初始值是4)
= 4+2*1+1
a2 = 7 ,接着a1被a2赋值 其值也是 7
继续 第二次循环 a2= a1+m(a1的初始值是7,i 的值为2)
=7+2*2+1
a2 =12,接着a1被a2赋值,其值也是12
继续 第三次循环 a2 = a1+m(a1的初始值是12,i的值为3)
=12+ 2*3+1
a2= 19
所以最后可以得到 a2(玩家打怪的经验为)= 20如下图:
接着在看下面 我玩家等级为2 然后在接着看看经验是多少?如下图
a2的经验是 13 在加上之前的1 点经验最终经验就是14 具体的演算过程 可以参考上面!
诸如此类推即可!
大家可以在实际中运用怪物经验算法,搭配好技能使用,合理快速高效的升级! 谢谢!~~
页:
[1]