Sha256: 0dfe597fa19b42ae234922d3bcc228edc317bd0be2bc93b967b1518703bfb5aa

Contents?: true

Size: 1.63 KB

Versions: 4

Compression:

Stored size: 1.63 KB

Contents

# encoding: utf-8
# frozen_string_literal: true

# Ein Feld des Spielfelds. Ein Spielfeld ist durch die Koordinaten eindeutig
# identifiziert.
class Field
  # @!attribute [r] coordinates
  # @return [Coordinates] die X-Y-Koordinaten des Feldes
  attr_reader :coordinates

  # @!attribute [rw] piece
  # @return [Piece] das Piece auf diesem Feld, falls vorhanden, sonst nil
  attr_accessor :piece

  # Erstellt ein neues leeres Feld.
  #
  # @param x [Integer] X-Koordinate
  # @param y [Integer] Y-Koordinate
  # @param color [Color] Farbe des Spielsteins, der das Feld überdeckt, nil falls kein Spielstein es überdeckt
  def initialize(x, y, piece = nil)
    @piece = piece
    @coordinates = Coordinates.new(x, y)
  end

  # Vergleicht zwei Felder. Felder sind gleich, wenn sie gleiche Koordinaten und
  # den gleichen Spielstein haben.
  # @return [Boolean] true bei Gleichheit, sonst false.
  def ==(other)
    !other.nil? && coordinates == other.coordinates && piece == other.piece
  end

  # @return [Integer] X-Koordinate des Felds
  def x
    coordinates.x
  end

  # @return [Integer] Y-Koordinate des Felds
  def y
    coordinates.y
  end

  # @return [Team] Team des Pieces auf dem Feld
  def team
    if piece.nil?
      nil
    else
      piece.color.to_t
    end
  end

  # @return [PieceColor] Farbe des Pieces auf dem Feld
  def color
    if piece.nil?
      nil
    else
      piece.color
    end
  end

  # @return [Boolean] true, wenn das Feld nicht durch einen Spielstein überdeckt ist, sonst false
  def empty?
    piece.nil?
  end

  # @return [String] Textuelle Darstellung des Feldes.
  def to_s
    empty? ? '__' : piece.to_ss
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
software_challenge_client-22.1.0.1 lib/software_challenge_client/field.rb
software_challenge_client-22.1.0 lib/software_challenge_client/field.rb
software_challenge_client-22.0.3 lib/software_challenge_client/field.rb
software_challenge_client-22.0.2 lib/software_challenge_client/field.rb