Ruby интерпретатор падает на: key_down - PullRequest
0 голосов
/ 10 апреля 2019

Я новичок в ruby ​​и программировании в целом, и я использую гем под названием ruby2D. Я пытаюсь заставить куб прыгать, но когда я нажимаю клавишу прыжка, мой интерпретатор просто падает, не говоря ни слова об ошибках

У меня были проблемы с выявлением проблемы, но я пробовал использовать вместо вместо, а пока и это не сработало

on :key_down do |jump|
 if jump.key == 'j'
  if player.y == 520
   gravity = -15
   player.y = 510
   until player.y == 520
    player.y += gravity
    gravity += 1
   end
  end
 end
end 

Я бы хотел, чтобы мой куб прыгнул и снова упал, но у меня просто сбои

1 Ответ

0 голосов
/ 07 июня 2019

В Ruby2D вы должны использовать tick для анимации.

Окно также управляет циклом обновления, одним из немногих бесконечных циклов в программировании, который вы встретите, который не является ошибкой. Каждое окно имеет пульс, цикл, который запускается 60 раз в секунду, или настолько близко к нему, насколько позволяет производительность компьютера. Используя метод update, мы можем войти в этот цикл и оживить окно!

Попробуйте что-то вроде этого:

require 'ruby2d'

set title: 'squares'
set background: 'blue'
set width: 1280
set height: 720
set borderless: true

on_air = false 
tick = 0


ground = Rectangle.new(
 x: 0, y: 620,
 width: 1280, height: 100,
 color: 'green'
)

player = Square.new(
 x: 100, y: 520,
 size: 100,
 color: ['red', 'purple', 'fuchsia', 'maroon']
)

on :key_down do |jump|
 if jump.key == 'j'
  player.y -= 50
  on_air = true
 end
end

update do
  if on_air
   if tick % 1 == 0
     player.y += 5
     if (player.y + player.size) == ground.y
      on_air = false
     end     
   end
  end

  tick += 1
end

show
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...