查看: 4579|回复: 16

[已经解决] "include" 的意思是“or”,那怎么写“and”啊?

[复制链接]
梦石
0
星屑
9160
在线时间
466 小时
注册时间
2015-5-8
回帖
704
发表于 2019-10-20 12:03:14 | 显示全部楼层 |阅读模式

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

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

×
比如我想写这两句:
"当身上带有第100号、或第105号、或第114号、或第666号物品时"
“当身上带有第100号、和第105号、和第114号、和第666号物品时”

都该怎么写啊?
梦石
0
星屑
39301
在线时间
11159 小时
注册时间
2009-3-15
回帖
4768
发表于 2019-10-20 13:01:45 | 显示全部楼层
本帖最后由 soulsaga 于 2019-10-20 13:52 编辑

用F1里Array项介绍的&并集
[pre lang="ruby"]a=[2,1,3,4]
b = a & [1,3,4]
p b == [1,3,4]
[/pre]
回复

使用道具 举报

梦石
0
星屑
14720
在线时间
2175 小时
注册时间
2016-9-20
回帖
777
发表于 2019-10-20 15:06:58 | 显示全部楼层
我的方法
道先腳本合集里找到这个判別状态编号
特定角色的状态
$game_actors[角色编号].state?(状态编号)

#第一题
$a = [100,105,114,666]
for i in $a
if  $game_actors[角色编号].state?(i) == true
#角色编号带有四中状态之中的一种
end
end

#第二题
$a = [100,105,114,666]
b = 0
for i in $a
if  $game_actors[角色编号].state?(i) == true
b+=1
end
end
if b == 4
#角色编号带有四中状态全部四种
end

点评

我很赞同  发表于 2019-10-20 16:10
我看错了以为楼主说状态, 原来是物品  发表于 2019-10-20 15:32
我很赞同  发表于 2019-10-20 15:22
贴子只供参考我贴子内容有很多只是我自己标识的内容代指不是原来意思,偏向发贴当时的想法(后来回看贴发现有很多错误,会造成误导 ),如果想靠谱点应 找相关正确的文章   -- 2025/4/19
回复 1 0

使用道具 举报

梦石
0
星屑
3242
在线时间
205 小时
注册时间
2019-9-16
回帖
195
发表于 2019-10-20 16:18:35 | 显示全部楼层
本帖最后由 寒凌天 于 2019-10-20 16:21 编辑

[pre lang="ruby"]#你要先明白“并”和“或”的写法
#比如a大于2,并且小于5,则写成 (该条件需要两个条件同时满足才会执行)
if a>2&&a<5
#这里写执行代码
end

#当a=3,或者a=6时(该条件只要满足其中一条就可执行)
if a==2||a==6
#这里写执行代码
end

#另外,“并”和“或”也能一起用,比如这样
if a>2&&a<5||a==6
#这里写执行代码
end


#$game_party.item_number(100)的值代表物品100你所拥有的数量
#下面是你的问题1的完整代码,只要拥有4种物品的任意一个就会执行代码
if $game_party.item_number(100)>0||$game_party.item_number(105)>0||$game_party.item_number(114)>0||$game_party.item_number(666)>0

end

#下面是你的问题2的完整代码,必须四个物品都拥有时才会执行代码
if $game_party.item_number(100)>0&&$game_party.item_number(105)>0&&$game_party.item_number(114)>0&&$game_party.item_number(666)>0

end

[/pre]

点评

我很赞同  发表于 2019-10-20 17:04

评分

参与人数 2赞 +2 收起 理由
miantouchi + 1 精品文章
taeckle + 1 塞糖

查看全部评分

回复

使用道具 举报

梦石
0
星屑
9160
在线时间
466 小时
注册时间
2015-5-8
回帖
704
 楼主| 发表于 2019-10-20 17:13:02 | 显示全部楼层
本帖最后由 taeckle 于 2019-10-20 17:16 编辑
寒凌天 发表于 2019-10-20 16:18
#你要先明白“并”和“或”的写法
#比如a大于2,并且小于5,则写成 (该条件需要两个条件同时满足才会执行 ...


我想问的是怎么用一个数组 +一句话搞定,
你这还是用了4句话,对应4个物品...
不过还是要给你点个赞!

点评

万丈高楼平地起,这些基础性的知识也要经常复习的!  发表于 2019-10-21 02:56
写成我这样好理解,你没看我上面都写的很详细么,就怕你后者其他看这个帖子的人看不明白,备注我也都写的很详细。哪想你想玩高端的……  发表于 2019-10-20 17:47
吐血……那你提前说清楚啊……不过已经有大神回答了……  发表于 2019-10-20 17:42
回复

使用道具 举报

梦石
0
星屑
9160
在线时间
466 小时
注册时间
2015-5-8
回帖
704
 楼主| 发表于 2019-10-20 17:14:09 | 显示全部楼层
soulsaga 发表于 2019-10-20 13:01
用F1里Array项介绍的&并集
a=[2,1,3,4]
b = a & [1,3,4]

大神我想问的是怎么用一个数组 +一句话搞定这个if.......
回复

使用道具 举报

梦石
0
星屑
39301
在线时间
11159 小时
注册时间
2009-3-15
回帖
4768
发表于 2019-10-20 17:33:14 | 显示全部楼层
本帖最后由 soulsaga 于 2019-10-20 17:56 编辑
taeckle 发表于 2019-10-20 17:14
大神我想问的是怎么用一个数组 +一句话搞定这个if.......


[pre lang="ruby"]a=[1,3,2,4]
道具数组=[2,3,1,4]
p a.all? {|f| 道具数组.include?(f) }[/pre]
这写法接触的不多..所以不太会写..

评分

参与人数 1赞 +1 收起 理由
taeckle + 1 继续努力!

查看全部评分

回复

使用道具 举报

梦石
0
星屑
42325
在线时间
6020 小时
注册时间
2006-11-10
回帖
6974
发表于 2019-10-20 17:40:09 | 显示全部楼层
if [100,105,114,666].any? {|i| $game_party.item_number(i) > 0}

if [100,105,114,666].all? {|i| $game_party.item_number(i) > 0}

评分

参与人数 4星屑 +50 赞 +4 收起 理由
RyanBern + 50 + 1 认可答案
taeckle + 1 大神威武,力挽狂澜!
miantouchi + 1 精品文章
KB.Driver + 1 我很赞同

查看全部评分

回复 1 0

使用道具 举报

梦石
0
星屑
9160
在线时间
466 小时
注册时间
2015-5-8
回帖
704
 楼主| 发表于 2019-11-8 20:25:05 | 显示全部楼层
本帖最后由 taeckle 于 2019-11-8 20:27 编辑
灯笼菜刀王 发表于 2019-10-20 17:40
if [100,105,114,666].any? {|i| $game_party.item_number(i) > 0}

if [100,105,114,666].all? {|i| $game ...


大神那要是判断第6,66,666号敌人是否同时在敌方队伍里且这三个敌人的HP是否都大于0用all又该怎么写啊?


实在不想用for来写啊..

回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部