Sha256: 1ea570f9f4d3edee0d865579a5c263ceb476f19c8dde79acf3fac18a8ae526a8

Contents?: true

Size: 1.13 KB

Versions: 2

Compression:

Stored size: 1.13 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)
    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.1.0 lib/software_challenge_client/board.rb
software_challenge_client-1.0.0 lib/software_challenge_client/board.rb