PieceKY::new(self, 9, 1, false)
PieceKA::new(self, 2, 2, false)
PieceHI::new(self, 8, 2, false)
- PieceFU::new(self, 1, 3, false)
- PieceFU::new(self, 2, 3, false)
- PieceFU::new(self, 3, 3, false)
- PieceFU::new(self, 4, 3, false)
- PieceFU::new(self, 5, 3, false)
- PieceFU::new(self, 6, 3, false)
- PieceFU::new(self, 7, 3, false)
- PieceFU::new(self, 8, 3, false)
- PieceFU::new(self, 9, 3, false)
+ (1..9).each do |i|
+ PieceFU::new(self, i, 3, false)
+ end
PieceKY::new(self, 1, 9, true)
PieceKE::new(self, 2, 9, true)
PieceKY::new(self, 9, 9, true)
PieceKA::new(self, 8, 8, true)
PieceHI::new(self, 2, 8, true)
- PieceFU::new(self, 1, 7, true)
- PieceFU::new(self, 2, 7, true)
- PieceFU::new(self, 3, 7, true)
- PieceFU::new(self, 4, 7, true)
- PieceFU::new(self, 5, 7, true)
- PieceFU::new(self, 6, 7, true)
- PieceFU::new(self, 7, 7, true)
- PieceFU::new(self, 8, 7, true)
- PieceFU::new(self, 9, 7, true)
+ (1..9).each do |i|
+ PieceFU::new(self, i, 7, true)
+ end
end
def have_piece?(hands, name)
if ((x0 == 0) || (y0 == 0))
piece = have_piece?(hands, name)
- return :illegal if (! piece.move_to?(x1, y1, name))
+ return :illegal if (! piece.move_to?(x1, y1, name)) # TODO null check for the piece?
piece.move_to(x1, y1)
else
- return :illegal if (! @array[x0][y0].move_to?(x1, y1, name))
+ return :illegal if (! @array[x0][y0].move_to?(x1, y1, name)) # TODO null check?
if (@array[x0][y0].name != name) # promoted ?
@array[x0][y0].promoted = true
end
- if (@array[x1][y1])
+ if (@array[x1][y1]) # capture
if (@array[x1][y1].name == "OU")
return :outori # return board update
end
@array[x1][y1].sente = @array[x0][y0].sente
@array[x1][y1].move_to(0, 0)
- hands.sort! {|a, b|
+ hands.sort! {|a, b| # TODO refactor. Move to Piece class
a.name <=> b.name
}
end
raise "can't find ou"
end
+ # note checkmate, but check. sente is checked.
def checkmated?(sente) # sente is loosing
ou = look_for_ou(sente)
x = 1