Sha256: d84ec43a8feaa1b33e260280ccf2cc26dd496d837a8a0fde2d0bb1db4b233ddd

Contents?: true

Size: 1.2 KB

Versions: 2

Compression:

Stored size: 1.2 KB

Contents

# encoding: utf-8
require_relative './util/constants'
require_relative 'game_state'
require_relative 'player'
require_relative 'field_type'
require_relative 'field'

# Ein Spielbrett bestehend aus 65 Feldern.
class Board
  # @!attribute [r] fields
  # @note Besser über die {#field} Methode auf Felder zugreifen.
  # @return [Array<Field>] Ein Feld wird an der Position entsprechend seines
  #   Index im Array gespeichert.
  attr_reader :fields

  # Initializes the board
  def initialize
    @fields = []
  end

  def to_s
    fields.map { |f| f.type.value }.join(' ')
  end

  def ==(other)
    fields.each_with_index do |field, index|
      return false if field != other.field(index)
    end
    true
  end

  def add_field(field)
    @fields[field.index] = field
  end

  # Zugriff auf die Felder des Spielfeldes
  #
  # @param index [Integer] Der Index des Feldes
  # @return [Field] Das Feld mit dem gegebenen Index. Falls das Feld nicht
  #   exisitert (weil der Index ausserhalb von 0..64 liegt), wird ein neues
  #   Feld vom Typ INVALID zurückgegeben.
  def field(index)
    return Field.new(FieldType::INVALID, index) if index.negative?
    fields.fetch(index, Field.new(FieldType::INVALID, index))
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
software_challenge_client-1.2.1 lib/software_challenge_client/board.rb
software_challenge_client-1.2.0 lib/software_challenge_client/board.rb