查看: 2962|回复: 11

[有事请教] 关于Ruby脚本的问题

[复制链接]
梦石
0
星屑
243
在线时间
21 小时
注册时间
2018-6-3
回帖
32
发表于 2018-7-14 21:21:15 | 显示全部楼层 |阅读模式

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

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

×
代码内容[pre lang="ruby"]control = File.new("control","r")
text = control.sysread(0)
if text=="up"
        move_up
end
if text=="down"
        move_down
end
if text=="left"
        move_left
end
if text=="right"
        move_right
end[/pre]


代码如上,套一个while之后就会卡死awa

怎么实现类似的功能并正常运行

孤独守望

梦石
0
星屑
3144
在线时间
1535 小时
注册时间
2006-10-16
回帖
4223

开拓者贵宾

发表于 2018-7-15 21:26:01 | 显示全部楼层
直接sysread这么硬核的么……
while没有出口,凭什么不卡死?
菩提本非树,明镜本非台。回头自望路漫漫。不求姻缘,但求再见。
本来无一物,何处惹尘埃。风打浪吹雨不来。荒庭遍野,扶摇难接。
不知道多久更新一次的博客
回复

使用道具 举报

梦石
0
星屑
12161
在线时间
4435 小时
注册时间
2014-4-11
回帖
5616

开拓者

发表于 2018-7-15 22:43:41 | 显示全部楼层
可是你的代码里面没有写着while
回复

使用道具 举报

梦石
0
星屑
243
在线时间
21 小时
注册时间
2018-6-3
回帖
32
 楼主| 发表于 2018-7-16 07:23:13 | 显示全部楼层
IamI 发表于 2018-7-15 21:26
直接sysread这么硬核的么……
while没有出口,凭什么不卡死?

不是啊

以上代码套一个while,结尾end,然后测试游戏会一直黑屏,然后显示代码已备份
回复

使用道具 举报

梦石
0
星屑
243
在线时间
21 小时
注册时间
2018-6-3
回帖
32
 楼主| 发表于 2018-7-16 07:23:44 | 显示全部楼层
yang1zhi 发表于 2018-7-15 22:43
可是你的代码里面没有写着while

套了while(结尾加end)就会一直黑屏

点评

满足条件就不在执行循环,不然就一直循环。一直循环那肯定就卡住  发表于 2018-7-16 08:04
那你要贴出套了while的啊。谁知道你while后面的条件是什么  发表于 2018-7-16 08:04
回复

使用道具 举报

梦石
0
星屑
243
在线时间
21 小时
注册时间
2018-6-3
回帖
32
 楼主| 发表于 2018-7-16 12:48:15 | 显示全部楼层
yang1zhi 发表于 2018-7-15 22:43
可是你的代码里面没有写着while

我写的是while true
awa
回复

使用道具 举报

永无止境的旅程<

梦石
0
星屑
537
在线时间
1554 小时
注册时间
2012-6-19
回帖
1162

开拓者贵宾

发表于 2018-7-16 16:40:22 | 显示全部楼层
rgss是单线程的脚本,我记得好像没有完全继承ruby的特性,ruby是多线程的。到rm这里就成了单线程,所以你如果执行耗时任务肯定会卡住黑屏啦
[url=https://rpg.blue/thread-389697-1-1.html]https://rpg.blue/https://rpg.blue/data/attachment/forum/201602/26/220128cfbxxs47xth4xkz4.jpg[/url]
&lt;font size=&quot;5&quot;&gt;[color=Green][url=https://rpg.blue/forum.php?mod=viewthread&amp;tid=396208&amp;extra=page%3D1][color=DeepSkyBlue]全新配套ACT系统,每周末一大更新,尽请期待。[/color][/url][/color]
回复

使用道具 举报

梦石
0
星屑
243
在线时间
21 小时
注册时间
2018-6-3
回帖
32
 楼主| 发表于 2018-7-17 16:48:50 | 显示全部楼层
丿梁丶小柒 发表于 2018-7-16 16:40
rgss是单线程的脚本,我记得好像没有完全继承ruby的特性,ruby是多线程的。到rm这里就成了单线程,所以你如 ...

所以所我应该怎么实现呢
回复

使用道具 举报

永无止境的旅程<

梦石
0
星屑
537
在线时间
1554 小时
注册时间
2012-6-19
回帖
1162

开拓者贵宾

发表于 2018-7-17 17:39:44 | 显示全部楼层
BlueHalo 发表于 2018-7-17 16:48
所以所我应该怎么实现呢

并不能实现,除非你把底层内核改了。
但是我能给你一些建议。虽然是单线程 但是也能并发执行。
多线程的原理是这样的,给你打个比方。前面有四桶水,四个桶是空的,装满一桶是一个任务。水管可以喷水是cpu执行。ruby是这样的,你用水管喷满一桶执行完一个任务。 如果多线程就是这样,执行的,每一桶装一点,无序的一桶装一点,直到全部装满。实际上系统的多线程也是这样执行的。ruby是执行单线程的,本身提供的api Thread也会卡住线程,所以想要实现多线程你就得把内核给改了
[url=https://rpg.blue/thread-389697-1-1.html]https://rpg.blue/https://rpg.blue/data/attachment/forum/201602/26/220128cfbxxs47xth4xkz4.jpg[/url]
&lt;font size=&quot;5&quot;&gt;[color=Green][url=https://rpg.blue/forum.php?mod=viewthread&amp;tid=396208&amp;extra=page%3D1][color=DeepSkyBlue]全新配套ACT系统,每周末一大更新,尽请期待。[/color][/url][/color]
回复

使用道具 举报

梦石
0
星屑
243
在线时间
21 小时
注册时间
2018-6-3
回帖
32
 楼主| 发表于 2018-7-17 18:39:33 | 显示全部楼层
丿梁丶小柒 发表于 2018-7-17 17:39
并不能实现,除非你把底层内核改了。
但是我能给你一些建议。虽然是单线程 但是也能并发执行。
多线程的 ...

麻烦。。。

不过我貌似想到了另一种方法
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部