查看: 3845|回复: 25

[已经解决] [已解决]not...and语句什么意思?@hidden有什么用?

[复制链接]
梦石
0
星屑
15041
在线时间
2230 小时
注册时间
2019-1-24
回帖
964

R考场第七期纪念奖

发表于 2019-5-13 11:06:38 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
本帖最后由 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有什么用?

老鹰

梦石
40
星屑
37812
在线时间
7091 小时
注册时间
2012-5-26
回帖
3297

极短24评委极短23参与极短22参与极短21评委老司机慢点开短篇十吟唱者组别冠军开拓者剧作品鉴家

发表于 2019-5-13 11:13:58 | 显示全部楼层
本帖最后由 百里_飞柳 于 2019-5-13 11:18 编辑

意思就是在 @Hidden 为真时,这个方法直接返回假
也就是在设计上,认为隐藏的敌人一定是存活的(hp0?返回假,判定为存活),隐藏的敌人只有在利用 战斗事件指令-敌人中途出现 后才能进行击杀

点评

真绕啊,隐藏是存活的,显示的是死亡的。  发表于 2019-5-13 16:43
@hp血量是战斗时候实时监控的吗?  发表于 2019-5-13 12:26
@Hidden 为假时,表示显示的敌人,true and @hp == 0,计算右边的@hp == 0, 是不是查看敌人血量是不是0,是0,就成立返回true,这块不太明白  发表于 2019-5-13 12:24
@Hidden 为真时,表示隐藏的敌人,false and @hp == 0, 这个方法直接返回假,不计算右边的@hp == 0,表示敌人存活。  发表于 2019-5-13 12:23
我记得中途逃跑的敌人也会获得@hidden标志  发表于 2019-5-13 11:52
回复

使用道具 举报

梦石
0
星屑
42235
在线时间
6017 小时
注册时间
2006-11-10
回帖
6966
发表于 2019-5-13 15:26:07 | 显示全部楼层
这个是定义" HP为0" 的状态,  内容就是 当战斗者不是隐藏的且HP等于0的时候,"HP为0" 这个状态成立

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

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

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

食栗子
反潜.gif

点评

逃跑和中途出现代码我找到了,拟看看是不是这块。  发表于 2019-5-14 13:59
从视觉上看, 都是怪消失, 如果只是用visible来判断是否显示, 那就会造成混乱, 所以 hidden 就是为了区分死亡后消失还是逃跑消失而设计的  发表于 2019-5-13 16:59
你不用去考虑什么存活不存活, 它只是用来作为"是否在场"的判定而已, 比如把怪杀了可以得到经验值, 让怪逃跑得不到, 就是用它判断的  发表于 2019-5-13 16:56
隐藏的是存活的、显示的是死亡的,怎么这么绕  发表于 2019-5-13 16:41
回复

使用道具 举报

梦石
0
星屑
42235
在线时间
6017 小时
注册时间
2006-11-10
回帖
6966
发表于 2019-5-13 17:14:32 | 显示全部楼层
要让一个图片消失, 有几种做法?

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

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

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

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

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

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

最后, 为什么不用opacity ?  因为, 它还要承当半透明图片的判断呢, 如果用opacity = 0 来让图片消失,  那假如一个半透明(opacity != 255)的幽灵,死后复活, 它的opacity要怎么恢复原来的设置?

点评

然后看XP的默认战斗, 杀掉敌人后, 敌人图片会消失, 敌人逃跑后,图片也会消失,这个地方使用hidden我没有找到,你看看楼下  发表于 2019-5-14 14:00
回复

使用道具 举报

梦石
1
星屑
24088
在线时间
3339 小时
注册时间
2011-7-8
回帖
3862

开拓者

发表于 2019-5-13 23:55:21 | 显示全部楼层
hp0这个判断通常是用于“复活技能”,不应该包括隐藏的敌人,无论此敌人的hp是否为0。

hidden还有一个用处是,设计类似Dota2里黑鸟“星体禁锢”的技能,就是把目标的 @Hidden 改成 true,一定回合后再改回来。

点评

这是XP设计的问题~  发表于 2019-5-14 18:06
一个@Hidden作用这么大  发表于 2019-5-14 14:13
熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复

使用道具 举报

梦石
0
星屑
15041
在线时间
2230 小时
注册时间
2019-1-24
回帖
964

R考场第七期纪念奖

 楼主| 发表于 2019-5-14 13:58:06 | 显示全部楼层
本帖最后由 miantouchi 于 2019-5-14 14:54 编辑

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

敌人队列.png

敌人队列1.png
逃跑时设置true
逃跑1.png
逃跑时设置flase
中途出现.png
战斗2.png

点评

正常情况下的战斗并没有操作hidden, 也就是说它一直是初始状态false, 你还是多打几次默认战斗看看表现吧  发表于 2019-5-14 16:35
但是我没找到hp0?处判断敌人死亡  发表于 2019-5-14 16:32
你的意思是杀死敌人的判断不是通过更改hidden,而是通过判断hp0?来进行,hp0?为真的时候hidden==false  发表于 2019-5-14 16:32
hidden 这个为真的时候, 表示敌人是隐藏的,也就是(没出现或者逃跑了), 杀死敌人不会改动它, 前面那个HP0? 的定义, 就是hidden==false的时候才算是杀死敌人  发表于 2019-5-14 16:02
图片更正了下,# 敌人不是隐藏状态的情况下 unless enemy.hidden,就是敌人显示结算,这是什么原因,不应该是敌人杀光了隐藏了,才结算吗?  发表于 2019-5-14 14:56
回复

使用道具 举报

梦石
0
星屑
15041
在线时间
2230 小时
注册时间
2019-1-24
回帖
964

R考场第七期纪念奖

 楼主| 发表于 2019-5-14 16:37:38 | 显示全部楼层
我标记的貌似是通过hp0?来判断物品、技能的使用对象
1.png
2.png

点评

除了HP0? 还有dead? 也是判断死亡, 而且一般是用dead? 来判断的, HP0? 只是用于"需要复活的对象"  发表于 2019-5-14 17:12
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部