Project1

标题: 如何获取rand随机数的数值? [打印本页]

作者: 美丽晨露    时间: 2013-9-24 23:18
标题: 如何获取rand随机数的数值?
RUBY 代码复制
  1. # 隨機化BGM
  2.     randbgm = rand(6)
  3.    case randbgm
  4.    when 0
  5.       Audio.bgm_play("Audio/BGM/1")
  6.  
  7.    when 1
  8.      Audio.bgm_play("Audio/BGM/2")
  9.   when 2
  10.      Audio.bgm_play("Audio/BGM/3")
  11. when 3
  12.      Audio.bgm_play("Audio/BGM/4")
  13. when 4
  14.      Audio.bgm_play("Audio/BGM/5")
  15. when 5
  16.      Audio.bgm_play("Audio/BGM/6")
  17. end

之后写的脚本如何获取rand的数值?
即是直接使用when语句,不要二次rand随机数了。
作者: cinderelmini    时间: 2013-9-24 23:35
本帖最后由 cinderelmini 于 2013-9-24 23:38 编辑

RUBY 代码复制
  1. # 隨機化BGM
  2.    @randbgm = rand(6)
  3.    case @randbgm
  4.    when 0
  5.       Audio.bgm_play("Audio/BGM/1")
  6.  
  7.    when 1
  8.      Audio.bgm_play("Audio/BGM/2")
  9.   when 2
  10.      Audio.bgm_play("Audio/BGM/3")
  11. when 3
  12.      Audio.bgm_play("Audio/BGM/4")
  13. when 4
  14.      Audio.bgm_play("Audio/BGM/5")
  15. when 5
  16.      Audio.bgm_play("Audio/BGM/6")
  17. end


如果是在同一个class里面的话~
就:
把randbgm改成@randbgm
之后也都在前面加上@就是了~
也就是说~
@randbgm = rand(6)
只需要写一次~
以后只需要在使用的时候写
case @randbgm
就是了~
作者: 美丽晨露    时间: 2013-9-24 23:36
cinderelmini 发表于 2013-9-24 23:35
# 隨機化BGM
   randbgm = rand(6)
   case randbgm

这样做的话,之后获取的数值跟之前的数值一样吗?
如果不是在class内的又该怎么做?
作者: cinderelmini    时间: 2013-9-24 23:41
本帖最后由 cinderelmini 于 2013-9-25 00:01 编辑
美丽晨露 发表于 2013-9-24 23:36
这样做的话,之后获取的数值跟之前的数值一样吗?
如果不是在class内的又该怎么做? ...


啊。。我更新了一下脚本内容。。是@randbgm~
如果不是在同个class里的话~
一般用公开变量吧:
attr_accessor     :xxxx
xxxx是个变量名~
在本class里面可以用@xxxx赋值~
在其他class里面的话~
必须先调用本class~
比如某窗口:@a_window = Window_Base.new
这样~
然后使用@a_window里面的公开变量的话~
就用@a_window.xxxx就可以了~

如果觉得麻烦的话~
直接用全局变量$xxxx =
就是了~

-------------------------------------------------------

如果要重置一个变量的话~
可以在同个class里写一个函数:
RUBY 代码复制
  1. def refresh_rand
  2.   @randbgm = rand(6)
  3. end

然后要重置的时候直接用:refresh_rand
外部用的话就用:.refresh_rand
作者: 芯☆淡茹水    时间: 2013-9-25 08:25
随机音乐啊,也可以很简单的弄
  1. def randbgm
  2.   n = (rand (6)).to_s
  3.   Audio.bgm_play("Audio/BGM/" + n)
  4. end
复制代码
调用的时候,如果在同一个类里,直接 randbgm 。如果在不同类,比如上面定义在 Game_System 里,在外面调用就写:$game_system.randbgm 。
就是直接播放随机音乐了。
作者: 恐惧剑刃    时间: 2013-9-25 21:37
本帖最后由 恋′挂机 于 2013-9-25 21:38 编辑

变量没搞清楚吧?
@实例变量
一般说法是:在方法中通用的变量
实例变量与临时变量(也就是你用的randbgm,这个被称作临时变量)
先解释下临时变量吧,顾名思义,只是临时的,不能在方法或类中共享
临时变量仅限同一个方法内部使用
实例变量我感觉我说的不是很准确,
我的解释
在同一类中可以在所有方法中通用的变量称为实例变量


就是说,你之前那个随机在main里,现在想在update里获取这个值需要带@
因为@可以在所有方法中通用(main、update就是同一类中的不同方法)

说白了,这些变量其实就是使用范围不同而已。




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