Ошибка в Gosu 2D Programming Development Programming

В данный момент я изучаю Ruby, поэтому определенно начинающий и играю в разработку 2D-игр Gosu, и у меня возникают проблемы со следующим кодом, и я не уверен, что я пропустил / сделал неправильно.

Код является:

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>'

1 ответ

Решение

У вас есть опечатка в инициализации.

Вы намеревались написать инициализацию, чтобы предоставить конструктор для вашей игры и вызвать конструктор Gosu::Window (super) с 3 параметрами. Но так как вы на самом деле не определили инициализацию (вместо этого вы определили отдельный метод инициализации) - MyGame.new пытается вызвать Gosu::Window#initialize, который принимает 3 аргумента, но вы предоставляете 0 для MyGame.new - это то, что сообщение об ошибке пытается передать.

Если вы исправите опечатку initialize -> initialize, MyGame.new вызовет ваш конструктор без аргументов, а затем предоставит необходимые 3 аргумента с помощью супер-вызова.

Другие вопросы по тегам