Skip to content

Instantly share code, notes, and snippets.

@CoderPuppy
Created February 20, 2013 22:02
Show Gist options
  • Save CoderPuppy/5000056 to your computer and use it in GitHub Desktop.
Save CoderPuppy/5000056 to your computer and use it in GitHub Desktop.
Part of a jruby game graphics library
require 'set'
class Window
def initialize
@frame = javax.swing.JFrame.new
@frame.default_close_operation = javax.swing.WindowConstants.EXIT_ON_CLOSE
@input = Input.new(@frame)
end
def resize(w, h)
@frame.set_size w, h
self
end
def show
@frame.visible = true
self
end
def title(val = nil)
if val.is_a? String
@frame.title = val
self
else
@frame.title
end
end
alias :title= :title
end
class Input
include java.awt.event.KeyListener
CODES = {
}
def initialize(frame)
@frame = frame
@current = Set.new
@new = Set.new
frame.add_key_listener self
end
def update
@current = @new
@new = Set.new
end
def pressed?(code)
code = CODES[code] if code.is_a? Symbol
@current.include? code
end
def keyPressed(e)
@new.add e.keyCode
end
def keyReleased(e)
@new.delete e.keyCode
end
def keyTyped(e); end
end
$window = Window.new.title('Hello, Games!!!').resize(640, 480).show
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment