设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1679|回复: 5
打印 上一主题 下一主题

[已经解决] 如何获取rand随机数的数值?

[复制链接]

Lv5.捕梦者 (版主)

梦石
20
星屑
1840
在线时间
6925 小时
注册时间
2012-12-14
帖子
11485

短篇十战斗者组别冠军开拓者贵宾短篇九勇士组亚军

跳转到指定楼层
1
发表于 2013-9-24 23:18:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
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随机数了。

点评

↓ 之下的写的脚本需要用到这个数。  发表于 2013-9-24 23:35
随机数的值不就是randbgm吗?为什么还要获得。  发表于 2013-9-24 23:30
大家好,这里是晨露的说。请多多指教。
刚入门RM软件制作,请大家多多帮助我哦。
落雪君的欢乐像素教程,欢迎查阅。

Lv4.逐梦者

「Pemercyia」


Urhurrenna

梦石
0
星屑
9397
在线时间
2748 小时
注册时间
2008-9-5
帖子
3543

开拓者短篇八RM组冠军短篇九导演组亚军白银编剧

2
发表于 2013-9-24 23:35:06 | 只看该作者
本帖最后由 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
就是了~
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

梦石
20
星屑
1840
在线时间
6925 小时
注册时间
2012-12-14
帖子
11485

短篇十战斗者组别冠军开拓者贵宾短篇九勇士组亚军

3
 楼主| 发表于 2013-9-24 23:36:52 | 只看该作者
cinderelmini 发表于 2013-9-24 23:35
# 隨機化BGM
   randbgm = rand(6)
   case randbgm

这样做的话,之后获取的数值跟之前的数值一样吗?
如果不是在class内的又该怎么做?

点评

关于重置值~已更新内容……请留意……  发表于 2013-9-25 00:01
啊对了~忘说了~如果在一个class里面~加了@的变量,只要不重置这个类或者不改这个值的话~这个值是不变的~  发表于 2013-9-24 23:53
对脚本苦手的说,掌握这些对我来说很困难······  发表于 2013-9-24 23:51
如果在class之外还要用到,就要在前面加上$,话说魔女没有认真学习变量的形式吗?  发表于 2013-9-24 23:42
大家好,这里是晨露的说。请多多指教。
刚入门RM软件制作,请大家多多帮助我哦。
落雪君的欢乐像素教程,欢迎查阅。

回复 支持 反对

使用道具 举报

Lv4.逐梦者

「Pemercyia」


Urhurrenna

梦石
0
星屑
9397
在线时间
2748 小时
注册时间
2008-9-5
帖子
3543

开拓者短篇八RM组冠军短篇九导演组亚军白银编剧

4
发表于 2013-9-24 23:41:52 | 只看该作者
本帖最后由 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 00:03
重置rand值应该怎么做?  发表于 2013-9-24 23:58
谢谢你提供的思路。  发表于 2013-9-24 23:51

评分

参与人数 2星屑 +156 收起 理由
myownroc + 90 认可答案
美丽晨露 + 66 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33124
在线时间
5104 小时
注册时间
2012-11-19
帖子
4878

开拓者

5
发表于 2013-9-25 08:25:29 | 只看该作者
随机音乐啊,也可以很简单的弄
  1. def randbgm
  2.   n = (rand (6)).to_s
  3.   Audio.bgm_play("Audio/BGM/" + n)
  4. end
复制代码
调用的时候,如果在同一个类里,直接 randbgm 。如果在不同类,比如上面定义在 Game_System 里,在外面调用就写:$game_system.randbgm 。
就是直接播放随机音乐了。

评分

参与人数 2星屑 +80 收起 理由
myownroc + 50 我很赞同
美丽晨露 + 30 塞糖

查看全部评分

xp vx va mv  va mz 各类型脚本/插件定制
回复 支持 反对

使用道具 举报

Lv1.梦旅人

薄凉看客

梦石
0
星屑
50
在线时间
1269 小时
注册时间
2010-6-20
帖子
1316
6
发表于 2013-9-25 21:37:27 | 只看该作者
本帖最后由 恋′挂机 于 2013-9-25 21:38 编辑

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


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

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

评分

参与人数 2星屑 +80 收起 理由
myownroc + 50 我很赞同
美丽晨露 + 30 感谢解释

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-9-29 23:36

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表