Class: Piece
- Inherits:
-
Object
show all
- Defined in:
- lib/ari_chess/pieces/super/piece.rb
Instance Attribute Summary collapse
Instance Method Summary
collapse
Constructor Details
#initialize(pos = nil, board = nil, color = nil) ⇒ Piece
Returns a new instance of Piece.
4
5
6
7
8
|
# File 'lib/ari_chess/pieces/super/piece.rb', line 4
def initialize(pos = nil, board = nil, color = nil)
@pos = pos
@board = board
@color = color
end
|
Instance Attribute Details
#board ⇒ Object
Returns the value of attribute board.
2
3
4
|
# File 'lib/ari_chess/pieces/super/piece.rb', line 2
def board
@board
end
|
#color ⇒ Object
Returns the value of attribute color.
2
3
4
|
# File 'lib/ari_chess/pieces/super/piece.rb', line 2
def color
@color
end
|
#pos ⇒ Object
Returns the value of attribute pos.
2
3
4
|
# File 'lib/ari_chess/pieces/super/piece.rb', line 2
def pos
@pos
end
|
Instance Method Details
#deltas ⇒ Object
46
47
48
|
# File 'lib/ari_chess/pieces/super/piece.rb', line 46
def deltas
self.class::DELTAS
end
|
#dup(new_board) ⇒ Object
50
51
52
|
# File 'lib/ari_chess/pieces/super/piece.rb', line 50
def dup(new_board)
self.class.new(pos, new_board, color)
end
|
#move_into_check?(possible_pos) ⇒ Boolean
36
37
38
39
40
|
# File 'lib/ari_chess/pieces/super/piece.rb', line 36
def move_into_check?(possible_pos)
new_board = board.dup
new_board.move!(pos, possible_pos)
new_board.in_check?(color)
end
|
#moves ⇒ Object
10
11
12
13
14
15
16
17
18
19
|
# File 'lib/ari_chess/pieces/super/piece.rb', line 10
def moves
positions = []
deltas.each do |delta|
possible_moves = potential_moves(delta)
positions.concat(possible_moves)
end
positions
end
|
#next_pos(pos, delta) ⇒ Object
25
26
27
28
29
30
|
# File 'lib/ari_chess/pieces/super/piece.rb', line 25
def next_pos(pos, delta)
x, y = pos
dx, dy = delta
[x + dx, y + dy]
end
|
#update_piece(pos) ⇒ Object
21
22
23
|
# File 'lib/ari_chess/pieces/super/piece.rb', line 21
def update_piece(pos)
self.pos = pos
end
|
#valid_moves ⇒ Object
42
43
44
|
# File 'lib/ari_chess/pieces/super/piece.rb', line 42
def valid_moves
moves.reject { |move| move_into_check?(move) }
end
|
#valid_pos?(pos) ⇒ Boolean
32
33
34
|
# File 'lib/ari_chess/pieces/super/piece.rb', line 32
def valid_pos?(pos)
board.on_board?(pos) && (board[pos].nil? || board[pos].color != color)
end
|