class JustShogi::PromotionFactory
Promotion Factory¶ ↑
Generates the promoted or demoted piece given a piece
Constants
- PROMOTIONS
A mapping of promotions
Public Class Methods
new(piece)
click to toggle source
New objects can be instantiated by passing in the piece
@params [Piece] piece
the piece to be promoted
# File lib/just_shogi/promotion_factory.rb, line 39 def initialize(piece) @piece = piece end
Public Instance Methods
demotable?()
click to toggle source
# File lib/just_shogi/promotion_factory.rb, line 47 def demotable? !PROMOTIONS.key(@piece.class).nil? end
demote()
click to toggle source
Returns the demoted piece
# File lib/just_shogi/promotion_factory.rb, line 62 def demote demoted_klass = PROMOTIONS.key(@piece.class) if demoted_klass demoted_klass.new(id: @piece.id, player_number: @piece.player_number) else raise ArgumentError, "Piece cannot be demoted." end end
promotable?()
click to toggle source
# File lib/just_shogi/promotion_factory.rb, line 43 def promotable? !PROMOTIONS[@piece.class].nil? end
promote()
click to toggle source
Returns the promoted piece
# File lib/just_shogi/promotion_factory.rb, line 52 def promote promoted_klass = PROMOTIONS[@piece.class] if promoted_klass promoted_klass.new(id: @piece.id, player_number: @piece.player_number) else raise ArgumentError, "Piece cannot be promoted." end end