Project1

标题: 教给新手们的第三招 [打印本页]

作者: 怪蜀黍    时间: 2009-7-16 09:22
标题: 教给新手们的第三招
本帖最后由 雪流星 于 2009-7-15 21:42 编辑

前些天我们已经学习了“巧用数据库之一”,今天我们的话题还是巧用数据库,学习一下“巧用数据库之二”。依旧先声明,本帖的发表目的是为了给新手们提供帮助,本来就懂得的朋友请勿笑话。
    再次说一下,不要因为文章比较长而惧怕阅读,其实真的很简单,对您绝对有帮助!
    按照惯例,以一个例子来引出一个新的问题:
    当我们设计一个敌人,我们知道,它的MP上限在默认情况下是9999,要是我们想要把某个特定敌人的MP上限改成大于10000,怎么实现?
    这个问题的解决方法可能是多种的。现在我来说一种方法,巧妙地应用我们的数据库。首先,把脚本Game_Enemy类下的def base_maxhp(第61行开始)修改一下。
    原来的脚本是:

  1.   #--------------------------------------------------------------------------
  2.   # ● 获取基本 MaxHP
  3.   #--------------------------------------------------------------------------
  4.   def base_maxhp
  5.     return enemy.maxhp
  6.   end
复制代码
现在我们改成:

  1.   #--------------------------------------------------------------------------
  2.   # ● 获取基本 MaxMP
  3.   #--------------------------------------------------------------------------
  4.   def base_maxmp
  5.     if enemy.maxmp <= 9000
  6.       return enemy.maxmp
  7.     else
  8.       a = (enemy.maxmp - 9000) * 100
  9.       return a
  10.     end
  11.   end
复制代码
意思就是,假如设定某敌人的最大MP在1至9000,那么直接设定即可。如果最大MP大于9000的话,就等于“最大MP”减去9000后再乘以100。那么,假如我们要求某敌人的的最大MP为10000,就把数据库里“最大MP”的数值输入9100,(9100-9000)*100=10000,因此达到预期目的。假如要最大MP为12500,则输入9125,(9125-9000)*100=12500。呵呵!很巧妙吧?
    这样一来,我们可谓学会了一绝招。因为我们要设置类似的问题,就可以:

  1.      if ……<= 5000
  2.       实现目标1
  3.     elseif……> 5000&&……<= 6000
  4.       实现目标2     
  5.     elseif……> 6000&&……<= 7000
  6.       实现目标3
  7. ……
复制代码
甚至可以:

  1. if ……== 1060
  2. ……
  3. end
  4. if ……== 1061
  5. ……
  6. end
  7. if ……== 1062
  8. ……
  9. end
复制代码
不光可以利用最大MP,还可以利用HP、精神力,敏捷等其他的数据!
哇!前景多么广阔!想设置什么都可以啦。
作者: zh99998    时间: 2009-7-16 09:25
那个啥,if连判断可以用case
  1. if var == 1060
  2. 语句1
  3. end
  4. if var== 1061
  5. 语句2
  6. end
  7. if var== 1062
  8. 语句3
  9. end
复制代码
可以缩写成
  1. case var
  2. when 1060
  3.   语句1
  4. when 1061
  5.   语句2
  6. when 1062
  7.   语句3
  8. end
复制代码

作者: 怪蜀黍    时间: 2009-7-16 09:31
呵呵,楼上说得对!这样就更加简洁了。:)
作者: zh99998    时间: 2009-7-16 09:49
还有啊,你把代码部分用code标签框出来阅读起来会清晰些
作者: 雪流星    时间: 2009-7-16 11:36
本帖最后由 雪流星 于 2009-7-15 21:38 编辑

case 还可以用范围
例如:

  1. case numberRange
  2.   when 0..10
  3.     .....
  4.   when 11..15
  5.     ....
  6.   when 16...20
  7.     ...
  8.   else
  9.     ...
  10. end
复制代码
如果用 if 来分歧范围的话,就要

  1. if numberRange >= 0 or numberRange <= 10
  2.   ...
  3. elsif ....
  4. .......
复制代码
或是

  1. if numberRange === (0..10)
  2.   ...
  3. elsif ....
  4. .......
复制代码

作者: 怪蜀黍    时间: 2009-7-16 13:10
大家补充得很好!这样大家都来探讨,内容就越来越充实了。呵呵。




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1