赞 | 5 |
VIP | 620 |
好人卡 | 38 |
积分 | 69 |
经验 | 125468 |
最后登录 | 2015-7-27 |
在线时间 | 1666 小时 |
Lv4.逐梦者
- 梦石
- 0
- 星屑
- 6930
- 在线时间
- 1666 小时
- 注册时间
- 2008-10-29
- 帖子
- 6710

|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 后知后觉 于 2011-12-6 12:59 编辑
好像很久没发主题帖了= =b.
今天拿到体验版的汉化版就看了一下.发现
菜单栏->游戏->显示主控制台
然后在水区问了一下.这东西打上勾以后测试游戏时.
会多出一个控制台程序窗口.
干嘛用的呢!
Shy07 给我讲了 print puts p
这个把信息输出到控制台窗口内.
这里说一下 print 和 p 在RMXP里的功能现在由 msgbox 和 msgbox_p 来替代了.
然后我就想能输出.那输入呢?
因为对RGSS以外的Ruby不大熟悉.接收标准输入的东东是什么不清楚.就翻了下参考手册.
找到了 gets 然后一试就邪恶了.....
相关的说明
gets([rs])
readline([rs])
Ruby解释器在运行时,会把从参数那里得到的文件(若没有的话,就利用标准输入)假设成一个虚拟文件(可以使用内部变量$<或ARGF访问该虚拟文件),然后从该虚拟文件中读入一行,并返回字符串.若到达文件尾部时返回nil.
使用rs指定的字符串作为行的切分符号.rs的默认值取自内部变量$/.读入的字符串也被存入内部变量$_中.
若将rs设为nil的话,则意味着读入文件的全部内容而忽略行的切分.若设为空字符串""的话,会把连续的换行当做行的切分符(段落模式).
readline的功能与gets相同,但是当它遇到文件结尾时会引发EOFError异常.
用以下代码进行测试
- if Input.trigger?(Input::F7)
- p Graphics.width,Graphics.height
- a = gets
- msgbox_p a
- eval a
- end
复制代码 把这段代码放在公共事件的事件脚本里.当然了这个公共事件是并行处理的.
然后测试游戏.先按F9打开这个公共事件的并行处理的开关.然后回到地图按F7.
就能看到控制台窗口里出现了2个数字.
鼠标点击控制台窗口激活他.
然后输入然后回车.
然后激活游戏窗口.按下F9看看3号开关的状态是不是邪恶了?
上面测试的是输入单行脚本.下面测试多行脚本..
把公共事件里的脚本替换成这样
- if Input.trigger?(Input::F7)
- p Graphics.width,Graphics.height
- a = ""
- while (c = gets) != "\n"
- a += c
- end
- msgbox_p a
- eval a
- end
复制代码 然后在控制台输入这段看看
- a = Graphics.width
- b = Graphics.height
- c = a + b
- $game_variables[3] = c
- p c
复制代码 看看效果如何.结束接收标准输入处理的方法是出现空行就可以了.
就是什么都不输入.光标在行首的时候直接按回车.
有一点要提示的就是 # 号.在控制台输入 # 号.
msgbox_p 出来是 "\#" 这种情况 "#{变量名}"可能就不能用了....= =b
在接收标准输入信息的时候.游戏窗口会【没有响应】
eval 控制台输入的东西.在调试的时候会不会很邪恶呢? |
|