首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Ruby学习游戏编程无法在Gosu中打开文件ruby.png

使用Ruby学习游戏编程无法在Gosu中打开文件ruby.png
EN

Stack Overflow用户
提问于 2015-12-18 19:15:29
回答 2查看 700关注 0票数 1

我正在使用Ruby进行学习游戏编程,我只想执行示例代码。

我使用示例代码得到以下错误。

代码语言:javascript
复制
❯ 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>'

示例代码如下所示:

代码语言:javascript
复制
require 'gosu'

class WhackARuby < Gosu::Window
  def initialize
    super(800, 600)
    self.caption = 'Whack the Ruby!'
    @image = Gosu::Image.new('ruby.png')
  end
end

对这里会发生什么有什么想法吗?例如,我尝试将违规行更改为@image = Gosu::Image.new('./ruby.png'),但这并没有帮助。

我怀疑这就是原因,但我的红宝石版本是ruby 2.2.1p85 (2015-02-26 revision 49769) [x86_64-darwin14]

编辑包括文件路径:

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-18 19:42:38

问题总是存在的,因为文件并不存在于您认为的位置。

引用文件的方法有很多。文件文档有expand_pathrealpathabsolute_path,所有这些都使得基于绝对路径或相对路径并相对于当前运行的文件、应用程序或特定目录引用文件变得非常容易。他们的例子中包括了如何使用它们。

重要的是确保您知道代码认为它是当前工作目录的目录和/或文件所在的位置。第一个在使用相对路径时很重要,第二个是如果您不想关心当前路径,并且知道文件总是存在于某个位置的话。

此外,当文件的名称与您认为的不同,或者甚至不存在时,也会出现这种情况。

票数 1
EN

Stack Overflow用户

发布于 2021-04-09 09:26:51

在我的例子中,解决方案是使用更显式的文件路径:

代码语言:javascript
复制
Gosu::Image.new("#{__dir__}/ruby.png")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34362487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档