无法使用ruby学习游戏编程在Gosu中打开文件ruby.png
我正在使用Ruby的学习游戏编程书,我正在尝试执行示例代码无法使用ruby学习游戏编程在Gosu中打开文件ruby.png,ruby,libgosu,Ruby,Libgosu,我正在使用Ruby的学习游戏编程书,我正在尝试执行示例代码 ❯ ruby WhackARuby/WhackARuby_1/whack_a_ruby.rb code /Users/noahclark/.rvm/gems/ruby-2.2.1/gems/gosu-0.10.4/lib/gos
❯ ruby WhackARuby/WhackARuby_1/whack_a_ruby.rb code
/Users/noahclark/.rvm/gems/ruby-2.2.1/gems/gosu-0.10.4/lib/gosu/patches.rb:40:in `initialize': Cannot open file ruby.png (RuntimeError)
from /Users/noahclark/.rvm/gems/ruby-2.2.1/gems/gosuu0.10.4/lib/gosu/patches.rb:40:in `initialize'
from WhackARuby/WhackARuby_1/whack_a_ruby.rb:15:in `new'
from WhackARuby/WhackARuby_1/whack_a_ruby.rb:15:in `initialize'
from WhackARuby/WhackARuby_1/whack_a_ruby.rb:70:in `new'
from WhackARuby/WhackARuby_1/whack_a_ruby.rb:70:in `<main>'
我使用示例代码得到以下错误
❯ ruby WhackARuby/WhackARuby_1/whack_a_ruby.rb code
/Users/noahclark/.rvm/gems/ruby-2.2.1/gems/gosu-0.10.4/lib/gosu/patches.rb:40:in `initialize': Cannot open file ruby.png (RuntimeError)
from /Users/noahclark/.rvm/gems/ruby-2.2.1/gems/gosuu0.10.4/lib/gosu/patches.rb:40:in `initialize'
from WhackARuby/WhackARuby_1/whack_a_ruby.rb:15:in `new'
from WhackARuby/WhackARuby_1/whack_a_ruby.rb:15:in `initialize'
from WhackARuby/WhackARuby_1/whack_a_ruby.rb:70:in `new'
from WhackARuby/WhackARuby_1/whack_a_ruby.rb:70:in `<main>'
❯ ruby-WhackARuby/WhackARuby_1/whack_a_ruby.rb代码
/Users/noahpark/.rvm/gems/ruby-2.2.1/gems/gosu-0.10.4/lib/gosu/patches.rb:40:“初始化”中:无法打开文件ruby.png(运行时错误)
from/Users/noahclark/.rvm/gems/ruby-2.2.1/gems/gosuu0.10.4/lib/gosu/patches.rb:40:in'initialize'
来自WhackARuby/WhackARuby_1/whack_a_ruby.rb:15:in'new'
来自WhackARuby/WhackARuby_1/whack_a_ruby.rb:15:in'initialize'
来自WhackARuby/WhackARuby_1/whack_a_ruby.rb:70:in'new'
来自WhackARuby/WhackARuby\u 1/whack\u a\u ruby.rb:70:in`'
示例代码如下所示:
require 'gosu'
class WhackARuby < Gosu::Window
def initialize
super(800, 600)
self.caption = 'Whack the Ruby!'
@image = Gosu::Image.new('ruby.png')
end
end
需要“gosu”
类WhackARuby
你有什么想法吗?例如,我尝试将有问题的行更改为@image=Gosu::image.new('./ruby.png')
,但没有任何帮助
我怀疑这是原因,但我的ruby版本是ruby 2.2.1p85(2015-02-26修订版49769)[x86_64-darwin14]
编辑包括文件路径:
问题总是在于文件不存在于您认为的位置 有许多方法可以引用文件。文档中有
expand_path
,realpath
,absolute_path
,所有这些都使得基于绝对或相对路径以及相对于当前运行的文件、应用程序或特定目录引用文件变得容易。它们的示例中介绍了如何使用它们
确保您知道代码将其视为当前工作目录的目录和/或文件所在的位置非常重要。当使用相对路径时,第一个很重要,第二个很重要,如果您不想关心当前路径,并且知道文件始终存在于某个位置
此外,还有一种情况是,文件名与您认为的不同,或者根本不存在。在我的情况下,解决方案是使用更明确的文件路径:
Gosu::Image.new("#{__dir__}/ruby.png")
我已经包含了
树
命令的输出,它显示了,我相信代码描述的文件系统。事实上,您是正确的。它使用的是一个相对路径,从那里调用脚本,只有当我从它自己的目录中调用它时,它才真正起作用。非常感谢。