Итак, я пытаюсь скопировать игровой укладчик в ruby2d. Я нарисовал три моих начальных блока на экране, но у меня возникли проблемы с их перемещением вправо, когда игра началась.
здесь - начало класса (в основном, здесь, чтобы показать начальную позицию блоки). Я пропустил ту часть класса, где я рисую квадраты, но знаю, что она включена в код.
require 'ruby2d'
set fps_cap: 1
set title: 'Stacker'
set background: 'blue'
GRID_SIZE = 40
#width = 640/ 40 = 16
#height = 480/ 40 = 12
# Create a class that is the starting position of three centered blocks along the bottom of the screen
class Blocks
def initialize
@positions = [[6,11], [7,11], [8,11]]
@direction = 'right'
end
#draw the actual blocks on the screen
def draw
@positions.each do |position|
Square.new(x: position[0] * GRID_SIZE, y: position[1] * GRID_SIZE, size: GRID_SIZE - 1, color: 'white')
end
end
#move the blocks right first and then have them bounce off the wall and move the opposite direction
#Have the blocks stop moving when I hit the spacebar
#Have the blocks fall if they are not places above a previouslt place block or the bottom floor
def move
@positions.shift
case @direction
when 'right'
@positions.push(head[0] + 1, head[1])
when 'left'
@positions.push(first[0] - 1, first[1])
end
end
private
#define the right side of the blocks
def head
@positions.last
end
#define the left side of the blocks
def first
@positions.first
end
end
#create an instance variable of the blocks to start the game
blocks = Blocks.new
#during each frame of the game clear the previously drawn blocks and then re-draw them into their
#moved position
update do
clear
blocks.draw
blocks.move
end
#When the spacebar is pressed, stop the blocks from moving
on :key_down do |event|
end
show
Просто я хочу, чтобы мои три блока двигались вправо, пока они не коснутся края окна. прямо сейчас они просто перемещаются в верхний левый угол окна (0,0). Любая помощь с благодарностью