Module: Bchess::BoardHelpers

Included in:
Board, PGN::GameBody, Piece
Defined in:
lib/bchess/helpers/board_helpers.rb

Instance Method Summary collapse

Instance Method Details

#castle_detected?(piece, column) ⇒ Boolean

Returns:

  • (Boolean)


7
8
9
# File 'lib/bchess/helpers/board_helpers.rb', line 7

def castle_detected?(piece, column)
  piece.is_a?(Bchess::King) && piece.column == 4 && (column - piece.column).abs == 2
end

#en_passant_detected?(piece, column, row) ⇒ Boolean

Returns:

  • (Boolean)


15
16
17
# File 'lib/bchess/helpers/board_helpers.rb', line 15

def en_passant_detected?(piece, column, row)
  piece.is_a?(Bchess::Pawn) && piece.row != row && piece.column != column && at(column, row).nil? && piece.can_take_on_field?(column, row)
end

#field(column, row) ⇒ Object



35
36
37
# File 'lib/bchess/helpers/board_helpers.rb', line 35

def field(column, row)
  (column + 97).chr + (row + 1).to_s
end

#invalid_data?(piece, column, row) ⇒ Boolean

Returns:

  • (Boolean)


3
4
5
# File 'lib/bchess/helpers/board_helpers.rb', line 3

def invalid_data?(piece, column, row)
  piece.nil? || !(0..7).cover?(column) || !(0..7).cover?(row)
end

#kings_present?Boolean

Returns:

  • (Boolean)


23
24
25
# File 'lib/bchess/helpers/board_helpers.rb', line 23

def kings_present?
  !!king(Bchess::WHITE) && !!king(Bchess::BLACK)
end

#pawn_long_move_detected?(piece, row) ⇒ Boolean

Returns:

  • (Boolean)


19
20
21
# File 'lib/bchess/helpers/board_helpers.rb', line 19

def pawn_long_move_detected?(piece, row)
  piece.is_a?(Bchess::Pawn) && (piece.row - row).abs == 2
end

#promotion_detected?(piece, row) ⇒ Boolean

Returns:

  • (Boolean)


11
12
13
# File 'lib/bchess/helpers/board_helpers.rb', line 11

def promotion_detected?(piece, row)
  piece.is_a?(Bchess::Pawn) && (row == 0 || row == 7)
end

#to_column(column) ⇒ Object



31
32
33
# File 'lib/bchess/helpers/board_helpers.rb', line 31

def to_column(column)
  column.bytes.first - 97
end

#to_row(row) ⇒ Object



27
28
29
# File 'lib/bchess/helpers/board_helpers.rb', line 27

def to_row(row)
  row.to_i - 1
end