作为任务的一部分,我试图使用 gosu gem 来制作一个简单的蛇游戏。我被指示遵循本指南:https ://github.com/gosu/gosu/wiki/ruby-tutorial
我已经走了很远,可以初始化一个蛇游戏,但把它放在了snake.rb文件中,并意识到它应该在game.rb文件中。我用 require_relative 链接到snake.rb 并尝试创建一个蛇类的新实例,这给了我:
未初始化的常量 Snake (NameError)
我回到snake.rb 文件并尝试从那里创建一条新蛇,就像我之前所做的那样。现在也在这个文件中,我得到:
未初始化的常量 Game (NameError)
似乎snake.rb找不到game.rb,反之亦然,尽管它们在同一个文件夹中并且我使用require_relative。这是代码:
游戏.rb:
require 'gosu'
require_relative 'snake'
class Game < Gosu::Window
def initialize(width, height)
super width, height
end
end
snake.rb(仅显示文件的开头):
require 'gosu'
require_relative 'game'
require_relative 'food'
class Snake < Game
SIZE = 20
def initialize
super SIZE * 20, SIZE * 20
self.caption = '"SNAKE"'
@x = (width / 2) - (SIZE / 2)
@y = (height / 2) - (SIZE / 2)
@dead = false
@direction = nil
@food = nil
@snake_length = 1
@score = 0
@speed = 1
end
据我了解,我现在应该能够在snake.rb或game.rb中创建一个新的snake实例,使用
Snake.new.show
但是它不起作用。有任何想法吗?
编辑:要求是游戏只包含 3 个 .rb 文件。一个叫做 game.rb 的,它有游戏类,并且在运行时也会启动游戏。一个叫snake.rb,它只有蛇类。一个叫做 food.rb ,它只有一个用于蛇试图捕捉的食物的食物类。蛇类继承自游戏,游戏继承自 gosu::window