class Snake::Model::Apple

Attributes

column[RW]
game[R]
row[RW]

Public Class Methods

new(game) click to toggle source
# File examples/snake/model/apple.rb, line 7
def initialize(game)
  @game = game
end

Public Instance Methods

generate(initial_row: nil, initial_column: nil) click to toggle source

generates a new location from scratch or via dependency injection of what cell is (for testing purposes)

# File examples/snake/model/apple.rb, line 12
def generate(initial_row: nil, initial_column: nil)
  if initial_row && initial_column
    self.row, self.column = initial_row, initial_column
  else
    self.row, self.column = @game.height.times.zip(@game.width.times).reject do |row, column|
      @game.snake.vertebrae.map {|v| [v.row, v.column]}.include?([row, column])
    end.sample
  end
end
inspect() click to toggle source

inspect is overridden to prevent printing very long stack traces

# File examples/snake/model/apple.rb, line 28
def inspect
  "#{super[0, 120]}... >"
end
remove() click to toggle source
# File examples/snake/model/apple.rb, line 22
def remove
  self.row = nil
  self.column = nil
end