Skip to content

Instantly share code, notes, and snippets.

@thomasjslone
Created April 11, 2022 14:23
Show Gist options
  • Save thomasjslone/bf25e53a3ad17f697043c49ccb7d1009 to your computer and use it in GitHub Desktop.
Save thomasjslone/bf25e53a3ad17f697043c49ccb7d1009 to your computer and use it in GitHub Desktop.
Ruby 2d Demo featuring a movable square with multikey listeners and a main background thread.
require 'ruby2d'
#window config
set width: 300, height: 200
set title: ""
set background: 'black'
#set fullscreen: true
@square = Square.new(x: 10, y: 20, size: 25, color: 'blue')
# Define the initial speed (and direction).
@x_speed = 0
@y_speed = 0
@t=Thread.new{loop do ; sleep 1 ; puts "hi"; end}
# Define what happens when a specific key is pressed.
# Each keypress influences on the movement along the x and y axis.
on :key_down do |event|
if event.key == 'left'
@x_speed = -2
#@y_speed = 0
end
end
on :key_down do |event|
if event.key == 'right'
@x_speed = 2
#@y_speed = 0
end
end
on :key_down do |event|
if event.key == 'up'
#@x_speed = 0
@y_speed = -2
end
end
on :key_down do |event|
if event.key == 'down'
#@x_speed = 0
@y_speed = 2
end
end
on :key_up do |event|
if event.key == 'left'
@x_speed = 0
#@y_speed = 0
end
end
on :key_up do |event|
if event.key == 'right'
@x_speed = 0
#@y_speed = 0
end
end
on :key_up do |event|
if event.key == 'up'
#@x_speed = 0
@y_speed = 0
end
end
on :key_up do |event|
if event.key == 'down'
#@x_speed = 0
@y_speed = 0
end
end
update do
@square.x += @x_speed
@square.y += @y_speed
end
show
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment