本帖最后由 RPGzh500223 于 2022-11-5 17:51 编辑
帖子的文字说明……我是一点都没看懂,还是看代码吧
2楼的代码 => Array#shuffle!(rmxp的ruby版本没有)
获取非重复值的话,必须保证数据的初始值是唯一的,如@f = [0, 0, 1, 1]就不行
多重赋值是同时进行的, 数组是可以这么写的,如:@f[a], @f[b] = @f[b], @f[a]
@f[a], @f[b] = @f[b], @f[a]
Array#shift => 删除数组的首单元并返回它。剩余单元依次提前。若数组为空返回 nil。(F1原文)
假设 @f = [0, 5, 3, 1, 2, 4]
p @f.shift # 0
case @f.shift # 5
case 表达式
[when 表达式 [, 表达式] ... [then]
表达式 ..]..
[else
表达式 ..]
end (F1原文)
# 条件:@f未声明或已初始化为数组 if @f.nil? || @f.empty? @f = [0, 1, 2, 3, 4, 5] n = @f.size n.times do |k| a = rand(n) @f[a], @f[k] = @f[k], @f[a] end end if (n = @f.shift) != nil case n when 0, 1, 2 then update_message(n, "系统") when 3, 4, 5 then update_message(n, "提示") end # 或者 update_message(n, n < 3 ? "系统" : "提示") end
# 条件:@f未声明或已初始化为数组
if @f.nil? || @f.empty?
@f = [0, 1, 2, 3, 4, 5]
n = @f.size
n.times do |k|
a = rand(n)
@f[a], @f[k] = @f[k], @f[a]
end
end
if (n = @f.shift) != nil
case n
when 0, 1, 2 then update_message(n, "系统")
when 3, 4, 5 then update_message(n, "提示")
end
# 或者 update_message(n, n < 3 ? "系统" : "提示")
end
这和随机数有什么关系 |