mrjulow 发表于 2015-7-15 19:40

[持续更新]关于地下城 之 打怪经验 计算深究

本帖最后由 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 具体的演算过程 可以参考上面!

诸如此类推即可!

大家可以在实际中运用怪物经验算法,搭配好技能使用,合理快速高效的升级! 谢谢!~~




˙澤.. 发表于 2015-8-26 15:26

有心了,忽然发现 程序教程要是也这样是不是就好理解很多。。。 简单的判断加循环。居然在你这秒懂。。。。
页: [1]
查看完整版本: [持续更新]关于地下城 之 打怪经验 计算深究