Class: MailChess::Piece::Rook
- Defined in:
- lib/mail_chess/pieces/rook.rb
Overview
Represents a rook chess piece.
Instance Attribute Summary
Attributes inherited from Piece
#board, #color, #hits, #html, #id, #moves, #type
Class Method Summary collapse
-
.new!(db, board, position, color) ⇒ Object
Overwrite superclass method.
Instance Method Summary collapse
-
#generate_moves ⇒ Object
Generate the possible moves.
-
#initialize(db, piece_id, board = nil) ⇒ Rook
constructor
Calls the superclass.
Methods inherited from Piece
#can_hit?, #can_move?, create_tables, #delete!, load!, #move, need_to_create_tables?, #position, #save!
Constructor Details
#initialize(db, piece_id, board = nil) ⇒ Rook
Calls the superclass.
11 12 13 14 15 |
# File 'lib/mail_chess/pieces/rook.rb', line 11 def initialize db, piece_id, board = nil super db, piece_id, board @html = @color == :white ? '♖' : '♜' end |
Class Method Details
.new!(db, board, position, color) ⇒ Object
Overwrite superclass method.
18 19 20 21 22 23 24 25 26 27 |
# File 'lib/mail_chess/pieces/rook.rb', line 18 def self.new! db, board, position, color super db, board, position, color id = db[:pieces].insert(:type => 'rook', :color => color.to_s, :position => position, :board_id => board.id) return Rook.new db, id, board end |
Instance Method Details
#generate_moves ⇒ Object
Generate the possible moves.
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/mail_chess/pieces/rook.rb', line 30 def generate_moves super r, c = ROWS.index(position[1]), COLS.index(position[0]) f = {:u => false, :l => false, :r => false, :d => false} (1..7).each do |i| pos = [] pos << [:u, COLS[c] + ROWS[r - i]] if r - i >= 0 and !f[:u] pos << [:l, COLS[c - i] + ROWS[r]] if c - i >= 0 and !f[:l] pos << [:r, COLS[c + i] + ROWS[r]] if c + i <= 7 and !f[:r] pos << [:d, COLS[c] + ROWS[r + i]] if r + i <= 7 and !f[:d] break if pos.empty? pos.each do |s, p| if @board.pieces[p] @hits << p if @board.pieces[p].color != @color f[s] = true else @moves << p end end end end |