| space, → | next slide |
| ← | previous slide |
| d | debug mode |
| ## <ret> | go to slide # |
| c | table of contents (vi) |
| f | toggle footer |
| r | reload slides |
| z | toggle help (this) |

while game_running?
# get user input
# run AI
# move everything
# resolve collisions
# draw graphics
# play sounds
# manage framerate
end



$ gamebox omg_aliens
$ cd omg_aliens
$ rakesrc/demo_stage.rb
class DemoStage < Stage
def setup
super
@my_actor = create_actor :my_actor
# ...src/demo_stage.rb
target.fill [25,25,25,255]
for star in @stars
target.draw_circle_s([star.x,star.y],1,[255,255,255,255])
endsrc/my_actor.rb
class MyActor < Actor
end
src/my_actor.rb
class MyActorView < ActorView
def draw(target, x_off, y_off)
target.draw_box [actor.x,actor.y], [20,20], [240,45,45,255]
# ...
audible.rb (gamebox src)
require 'behavior'
class Audible < Behavior
def setup
@sound_manager = @actor.stage.sound_manager
# ...
$ ./script/generate actor Player
@player = spawn :player, :x => 200, :y => 550has_behavior :graphicalattr_accessor :move_left, :move_right
def setup
i.while_key_pressed :left, self, :move_left
i.while_key_pressed :right, self, :move_righthas_behaviors :graphical, :updatable
def update(time_delta)
velocity = 0.12 * time_delta
@x += velocity if @move_right
@x -= velocity if @move_left
end$ ./script/generate actor FrickinLaser
$ ./script/generate view FrickinLaserView has_behavior :updatable
def update(time_delta)
velocity = 4*0.1*time_delta
@y -= velocity
remove_self if @y < 30
enddef draw(target, x_offset, y_offset)
target.draw_box_s([x,y], [x2,y2], color_array)
input_manager.reg KeyPressed, :space do
shoot
enddef shoot
laser = spawn :frickin_laser,
:x => @x + (image.width/2), :y => @y
endhas_behaviors :audible, :graph...
play_sound :shoot:collidable => {:shape => :circle,
:radius => 20}on_collision_of :alien, :frickin_laser do |alien,laser|
alien.remove_self
laser.remove_self
sound_manager.play_sound :death
end