Project1

标题: [已解决]not...and语句什么意思?@hidden有什么用? [打印本页]

作者: miantouchi    时间: 2019-5-13 11:06
标题: [已解决]not...and语句什么意思?@hidden有什么用?
本帖最后由 miantouchi 于 2019-5-16 20:46 编辑

def initialize
        @Hidden = false
end
# ● HP 0 判定
  #--------------------------------------------------------------------------
  def hp0?
    return (not @Hidden and @hp == 0)
  end

not  若表达式值为真就返回伪,若表达式值为伪则返回真。
and  首先计算左边,若结果为真就接着计算右边
not @hidden 返回true
然后计算@hp == 0,是这个意思吗
这么做有什么意义?多个@hidden有什么用?
作者: 百里_飞柳    时间: 2019-5-13 11:13
本帖最后由 百里_飞柳 于 2019-5-13 11:18 编辑

意思就是在 @Hidden 为真时,这个方法直接返回假
也就是在设计上,认为隐藏的敌人一定是存活的(hp0?返回假,判定为存活),隐藏的敌人只有在利用 战斗事件指令-敌人中途出现 后才能进行击杀
作者: 灯笼菜刀王    时间: 2019-5-13 15:26
这个是定义" HP为0" 的状态,  内容就是 当战斗者不是隐藏的且HP等于0的时候,"HP为0" 这个状态成立

然后, 你可以全局搜索 hp0?  看它被什么地方调用, 用来进行什么判断

@hp血量是战斗时候实时监控的吗? 为什么要实时监控?   只要在需要的时候, 调用战斗者的当前HP进行判断就可以了

这个 @Hidden 表示隐藏状态, XP的战斗是战斗开始后,把所有敌人都保存到 敌人队列数组里, 如果这个敌人是打一半出现的, 那@hidden就是true, 战斗中通过事件让它的@hidden为false, 这样看起来就是乱入战斗的了, 同样, 敌人逃跑, 就把它的@hidden = true, 这样它就从战场上消失了

食栗子

作者: 灯笼菜刀王    时间: 2019-5-13 17:14
要让一个图片消失, 有几种做法?

你现在应该知道答案吧, 可以用 self.visible = false,  self.opacity = 0 这两个方法

那为什么这里还要多一个hidden , 也是判断图片显示或者消失用呢?

拿我的栗子给你看,  我设计的潜艇, 平时是看不到的, 只有用声呐才能让它显形,


同时, 我设计的夜战, 在视野范围外,是看不到敌人的


如果, 只是用一个实变量来判断图片是否显示, 那, 夜战下的潜艇又如何呢?  很显然, 夜战和潜艇的隐藏方法必须要用不同的实变量才不会混乱

然后看XP的默认战斗,  杀掉敌人后, 敌人图片会消失, 敌人逃跑后,图片也会消失,  那怎么判断是杀掉消失的还是逃跑消失的?  答案就是, 用hidden来判断

最后, 为什么不用opacity ?  因为, 它还要承当半透明图片的判断呢, 如果用opacity = 0 来让图片消失,  那假如一个半透明(opacity != 255)的幽灵,死后复活, 它的opacity要怎么恢复原来的设置?
作者: guoxiaomi    时间: 2019-5-13 23:55
hp0这个判断通常是用于“复活技能”,不应该包括隐藏的敌人,无论此敌人的hp是否为0。

hidden还有一个用处是,设计类似Dota2里黑鸟“星体禁锢”的技能,就是把目标的 @Hidden 改成 true,一定回合后再改回来。
作者: miantouchi    时间: 2019-5-14 13:58
本帖最后由 miantouchi 于 2019-5-14 14:54 编辑

是这几个地方用@hidder吗?我找的对吗




逃跑时设置true

逃跑时设置flase

战斗2.png (79.39 KB, 下载次数: 21)

战斗2.png

作者: miantouchi    时间: 2019-5-14 16:37
我标记的貌似是通过hp0?来判断物品、技能的使用对象

1.png (118.56 KB, 下载次数: 31)

1.png

2.png (151.95 KB, 下载次数: 24)

2.png





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