class JustBackgammon::Point

Point

A point where pieces can land on. Each one has a number.

Attributes

number[R]

@return [Fixnum] the point number and identifier

pieces[R]

@return [Array<Piece>] all the pieces on this point

Public Class Methods

new(pieces: , number:) click to toggle source

A new instance of Point.

@param [Array<Hash>] pieces

All the pieces on this point.

@param [Fixnum] number

The point number and identifier.

Example:

# Instantiates a new Point
JustBackgammon::Point.new({
  pieces: [{player_number: 1}, {player_number: 1}],
  number: 1
})
# File lib/just_backgammon/point.rb, line 28
def initialize(pieces: , number:)
  @pieces = JustBackgammon::Piece.load(pieces)
  @number = number
end

Public Instance Methods

as_json() click to toggle source

A hashed serialized representation of the bar.

@return [Hash]

# File lib/just_backgammon/point.rb, line 105
def as_json
  { number: number, pieces: pieces.map(&:as_json) }
end
blocked?() click to toggle source

Checks if point has more than one piece.

@return [Boolean]

# File lib/just_backgammon/point.rb, line 73
def blocked?
  size > 1
end
blot?() click to toggle source

Checks if point has only one piece.

@return [Boolean]

# File lib/just_backgammon/point.rb, line 80
def blot?
  size == 1
end
hittable?(player_number) click to toggle source
# File lib/just_backgammon/point.rb, line 98
def hittable?(player_number)
  owned_by_opponent?(player_number) && blot?
end
home?(player_number) click to toggle source

Checks if point is a home point for specified player.

@return [Boolean]

# File lib/just_backgammon/point.rb, line 87
def home?(player_number)
  case player_number
  when 1
    (19..24).include?(number)
  when 2
    (1..6).include?(number)
  else
    true
  end
end
owned_by_opponent?(player_number) click to toggle source

Checks if point has pieces owned by the opponent of the specified player.

@return [Boolean]

# File lib/just_backgammon/point.rb, line 66
def owned_by_opponent?(player_number)
  pieces.any? { |p| p.player_number != player_number }
end
owned_by_player?(player_number) click to toggle source

Checks if point has pieces owned by the specified player.

@return [Boolean]

# File lib/just_backgammon/point.rb, line 59
def owned_by_player?(player_number)
  pieces.any? { |p| p.player_number == player_number }
end
pop(_=nil) click to toggle source

Removes a piece and returns it.

@return [Piece,NilClass]

# File lib/just_backgammon/point.rb, line 45
def pop(_=nil)
  @pieces.pop
end
push(piece) click to toggle source

Adds a piece to the point.

@return [Array<Piece>]

# File lib/just_backgammon/point.rb, line 52
def push(piece)
  @pieces.push(piece)
end