Class: MailChess::Piece::Knight
- Defined in:
- lib/mail_chess/pieces/knight.rb
Overview
Represents a knight 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) ⇒ Knight
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) ⇒ Knight
Calls the superclass.
11 12 13 14 15 |
# File 'lib/mail_chess/pieces/knight.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/knight.rb', line 18 def self.new! db, board, position, color super db, board, position, color id = db[:pieces].insert(:type => 'knight', :color => color.to_s, :position => position, :board_id => board.id) return Knight.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 |
# File 'lib/mail_chess/pieces/knight.rb', line 30 def generate_moves super r, c = ROWS.index(position[1]), COLS.index(position[0]) pos = [] pos << COLS[c - 1] + ROWS[r - 2] if c > 0 and r > 1 pos << COLS[c + 1] + ROWS[r - 2] if c < 7 and r > 1 pos << COLS[c - 2] + ROWS[r - 1] if c > 1 and r > 0 pos << COLS[c + 2] + ROWS[r - 1] if c < 6 and r > 0 pos << COLS[c - 2] + ROWS[r + 1] if c > 1 and r < 7 pos << COLS[c + 2] + ROWS[r + 1] if c < 6 and r < 7 pos << COLS[c - 1] + ROWS[r + 2] if c > 0 and r < 6 pos << COLS[c + 1] + ROWS[r + 2] if c < 7 and r < 6 pos.each do |p| if @board.pieces[p] @hits << p else @moves << p end end end |