Class: Field

Inherits:
Object
  • Object
show all
Defined in:
lib/software_challenge_client/field.rb

Overview

Ein Feld des Spielfelds. Ein Spielfeld ist durch die Koordinaten eindeutig identifiziert.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(x, y, pieces = [], obstructed = false) ⇒ Field

Konstruktor

Parameters:

  • x (Integer)

    X-Koordinate

  • y (Integer)

    Y-Koordinate

  • pieces (Array<Piece>) (defaults to: [])

    Spielsteine auf dem Feld

  • obstructed (Boolean) (defaults to: false)

    Ob das Feld blockiert ist (Brombeere)



21
22
23
24
25
# File 'lib/software_challenge_client/field.rb', line 21

def initialize(x, y, pieces = [], obstructed = false)
  @pieces = pieces
  @coordinates = CubeCoordinates.new(x, y)
  @obstructed = obstructed
end

Instance Attribute Details

#coordinatesCubeCoordinates (readonly)

Returns die Cube-Coordinates des Feldes.

Returns:



10
11
12
# File 'lib/software_challenge_client/field.rb', line 10

def coordinates
  @coordinates
end

#obstructedBoolean (readonly)

Returns ob das Feld durch eine Brombeere blockiert ist.

Returns:

  • (Boolean)

    ob das Feld durch eine Brombeere blockiert ist



13
14
15
# File 'lib/software_challenge_client/field.rb', line 13

def obstructed
  @obstructed
end

#piecesArray<Piece>

Returns Spielsteine auf dem Feld, beginnend beim untersten Stein.

Returns:

  • (Array<Piece>)

    Spielsteine auf dem Feld, beginnend beim untersten Stein



7
8
9
# File 'lib/software_challenge_client/field.rb', line 7

def pieces
  @pieces
end

Instance Method Details

#==(other) ⇒ Boolean

Vergleicht zwei Felder. Felder sind gleich, wenn sie gleiche Koordinaten und gleichen Typ haben.

Returns:

  • (Boolean)

    true bei Gleichheit, false sonst.



29
30
31
32
33
# File 'lib/software_challenge_client/field.rb', line 29

def ==(other)
  coordinates == other.coordinates &&
    obstructed == other.obstructed &&
    pieces == other.pieces
end

#add_piece(piece) ⇒ Object



57
58
59
# File 'lib/software_challenge_client/field.rb', line 57

def add_piece(piece)
  pieces.push(piece)
end

#colorPlayerColor

Returns Farbe des Spielers, der den obersten Spielstein kontrolliert. Ohne Spielsteine nil.

Returns:

  • (PlayerColor)

    Farbe des Spielers, der den obersten Spielstein kontrolliert. Ohne Spielsteine nil



68
69
70
# File 'lib/software_challenge_client/field.rb', line 68

def color
  pieces.last&.color
end

#empty?Boolean

Returns true, wenn eine Spielsteine auf dem Feld liegen und es nicht durch eine Brombeere blockiert ist.

Returns:

  • (Boolean)

    true, wenn eine Spielsteine auf dem Feld liegen und es nicht durch eine Brombeere blockiert ist



48
49
50
# File 'lib/software_challenge_client/field.rb', line 48

def empty?
  pieces.empty? && !obstructed
end

#has_ownerObject



72
73
74
# File 'lib/software_challenge_client/field.rb', line 72

def has_owner
  !color.nil?
end

#obstructed?Boolean

Returns true, es nicht durch eine Brombeere blockiert ist.

Returns:

  • (Boolean)

    true, es nicht durch eine Brombeere blockiert ist



53
54
55
# File 'lib/software_challenge_client/field.rb', line 53

def obstructed?
  obstructed
end

#remove_piecePiece

Entfernt den obersten Spielstein

Returns:

  • (Piece)

    entfernten Spielstein oder nil



63
64
65
# File 'lib/software_challenge_client/field.rb', line 63

def remove_piece
  pieces.pop
end

#to_sString

Returns Textuelle Darstellung des Feldes.

Returns:

  • (String)

    Textuelle Darstellung des Feldes.



77
78
79
80
81
82
83
84
# File 'lib/software_challenge_client/field.rb', line 77

def to_s
  s = "Feld #{coordinates}, "
  if obstructed?
    s += 'blockiert'
  else
    s += "Steine: #{pieces.map(&:to_s).join(', ')}"
  end
end

#xObject



35
36
37
# File 'lib/software_challenge_client/field.rb', line 35

def x
  coordinates.x
end

#yObject



39
40
41
# File 'lib/software_challenge_client/field.rb', line 39

def y
  coordinates.y
end

#zObject



43
44
45
# File 'lib/software_challenge_client/field.rb', line 43

def z
  coordinates.z
end