0

我现在正在学习 Ruby,所以绝对是初学者,并且一直在玩 Gosu 2D 游戏开发,并且遇到以下代码问题并且不确定我错过了什么/做错了什么。

代码是:

require 'rubygems'
require 'gosu'

class MyGame < Gosu::Window
  def initialise
    super 300, 400, false
    self.caption = "Gosu Tutorial Game"
  end

  def update
  end

  def draw
  end
end

window = MyGame.new
window.show

上面的代码存储在文件my_game.rb 中

当我尝试在命令行键入执行代码时:

> ruby my_game.rb

我收到以下错误:

my_game.rb:17:in `initialize': wrong # of arguments(0 for 3) (ArgumentError)
    from my_game.rb:17:in `new'
    from my_game.rb:17:in `<main>'
4

1 回答 1

1

您在初始化时有错字。

你的意思是编写初始化来为你的游戏提供一个构造函数,并使用 3 个参数调用 Gosu::Window 构造函数(超级)。但是由于您还没有真正定义初始化(而是定义了一个不同的初始化方法)- MyGame.new 尝试调用 Gosu::Window#initialize ,它接受 3 个参数,但您向 MyGame.new 提供了 0 - 这就是错误信息试图传达。

如果您要修复拼写错误 initialise -> initialize,MyGame.new 将不带参数调用您的构造函数,然后它将通过 super 调用提供所需的 3 个参数。

于 2015-04-02T08:07:40.377 回答