class ConsoleTetris::Tetrimino

Attributes

x_coordinate[RW]
y_coordinate[RW]

Public Class Methods

new(x = 0, y = 0, degree = 0, block_type:) click to toggle source
# File lib/console_tetris/tetrimino.rb, line 7
def initialize(x = 0, y = 0, degree = 0, block_type:)
  @x_coordinate = x
  @y_coordinate = y
  @degree = degree
  @block_type = block_type
  @previous_state = {x: x, y: y, degree: degree}
end

Public Instance Methods

back_horizontally() click to toggle source
# File lib/console_tetris/tetrimino.rb, line 43
def back_horizontally
  @x_coordinate = @previous_state[:x]
end
back_vertically() click to toggle source
# File lib/console_tetris/tetrimino.rb, line 39
def back_vertically
  @y_coordinate = @previous_state[:y]
end
block() click to toggle source
# File lib/console_tetris/tetrimino.rb, line 61
def block
  Block.send(@block_type, @degree)
end
bottom_edge?() click to toggle source
# File lib/console_tetris/tetrimino.rb, line 73
def bottom_edge?
  @y_coordinate + block.size > 19
end
down() click to toggle source
# File lib/console_tetris/tetrimino.rb, line 15
def down
  @previous_state[:y] = @y_coordinate

  @y_coordinate += 1
end
left_edge?() click to toggle source
# File lib/console_tetris/tetrimino.rb, line 65
def left_edge?
  @x_coordinate == 0
end
move_left() click to toggle source
# File lib/console_tetris/tetrimino.rb, line 33
def move_left
  @previous_state[:x] = @x_coordinate

  @x_coordinate -= 1
end
move_right() click to toggle source
# File lib/console_tetris/tetrimino.rb, line 27
def move_right
  @previous_state[:x] = @x_coordinate

  @x_coordinate += 1
end
right_edge?() click to toggle source
# File lib/console_tetris/tetrimino.rb, line 69
def right_edge?
  @x_coordinate + block.first.size > 9
end
rotate() click to toggle source
# File lib/console_tetris/tetrimino.rb, line 47
def rotate
  before_block = block

  @previous_state = {x: @x_coordinate, y: @y_coordinate, degree: @degree}
  @degree += 90
  @degree = 0 if @degree == 360

  @y_coordinate = 20 - block.size if @y_coordinate + block.size > 20
  @x_coordinate = 10 - block.first.size if @x_coordinate + block.first.size > 10

  @y_coordinate = 0 if @y_coordinate.negative?
  @x_coordinate = 0 if @x_coordinate.negative?
end
up() click to toggle source
# File lib/console_tetris/tetrimino.rb, line 21
def up
  @previous_state[:y] = @y_coordinate

  @y_coordinate -= 1
end