class ConsoleTetris::BackgroundBoard

Constants

BOARD_SIZE

Attributes

point[RW]

Public Class Methods

new() click to toggle source
# File lib/console_tetris/background_board.rb, line 9
def initialize
  @board = blank_board
  @point = 0
end

Public Instance Methods

overlap?(tetrimino) click to toggle source
# File lib/console_tetris/background_board.rb, line 18
def overlap?(tetrimino)
  tetrimino.block.map.with_index.any? {|row, i|
    row.map.with_index.any? {|value, j|
      return false if @board[tetrimino.y_coordinate + i].nil?

      @board[tetrimino.y_coordinate + i][tetrimino.x_coordinate + j] > 0 && value > 0
    }
  }
end
print_block(tetrimino) click to toggle source
print_gameover() click to toggle source
print_next_block(tetrimino) click to toggle source
print_point() click to toggle source
remove_filled_line!() click to toggle source
# File lib/console_tetris/background_board.rb, line 28
def remove_filled_line!
  @board.reject! {|a| a.all? {|e| e != 0 } }

  remove_size = BOARD_SIZE[:y] - @board.count

  @point = @point + remove_size * 1000
  remove_size.times { @board.unshift(blank_line) }
end
stack!(tetrimino) click to toggle source
# File lib/console_tetris/background_board.rb, line 14
def stack!(tetrimino)
  tetrimino.block.each.with_index {|row, i| row.each.with_index {|value, j| @board[tetrimino.y_coordinate + i][tetrimino.x_coordinate + j] += value } }
end

Private Instance Methods

blank_board() click to toggle source
# File lib/console_tetris/background_board.rb, line 118
def blank_board
  BOARD_SIZE[:y].times.map { blank_line }
end
blank_line() click to toggle source
# File lib/console_tetris/background_board.rb, line 122
def blank_line
  Array.new(BOARD_SIZE[:x]).fill(0)
end