Class: LifeGameWindow
- Inherits:
-
Gosu::Window
- Object
- Gosu::Window
- LifeGameWindow
- Defined in:
- lib/NanoLife.rb
Overview
Keybinds: s - Start and stop (pause) the game c - Clear the grid r - Randomize the grid Left Click - Invert the state of the cell clicked q/Esc - Quit
Instance Method Summary collapse
-
#button_down(id) ⇒ Object
Override callback for a button pressed.
-
#draw ⇒ Object
Draw screen.
-
#initialize ⇒ LifeGameWindow
constructor
Initialize Gosu window and LifeGrid.
-
#needs_cursor? ⇒ Boolean
Turn on cursor.
-
#update ⇒ Object
Update everything each frame before drawing.
Constructor Details
#initialize ⇒ LifeGameWindow
Initialize Gosu window and LifeGrid
23 24 25 26 27 28 29 30 31 32 |
# File 'lib/NanoLife.rb', line 23 def initialize # Gosu window super WIN_WIDTH, WIN_HEIGHT, false, 1000.0 / MAX_FPS self. = 'NanoLife - Conway\'s Game of Life' # Create a game of life grid and start randomly @grid = LifeGrid.new(self) @grid.randomize # Set running to true. Game can be paused with keyboard @running = true end |
Instance Method Details
#button_down(id) ⇒ Object
Override callback for a button pressed
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/NanoLife.rb', line 50 def (id) if id == Gosu::KbEscape or id == Gosu::KbQ close elsif id == Gosu::KbS @running = !@running elsif id == Gosu::KbC @grid.clear elsif id == Gosu::KbR @grid.randomize elsif id == Gosu::MsLeft @grid.invert_cell( mouse_x.to_i / CELL_SIZE, mouse_y.to_i / CELL_SIZE ) end end |
#draw ⇒ Object
Draw screen
45 46 47 |
# File 'lib/NanoLife.rb', line 45 def draw @grid.draw end |
#needs_cursor? ⇒ Boolean
Turn on cursor
35 |
# File 'lib/NanoLife.rb', line 35 def needs_cursor?; true; end |
#update ⇒ Object
Update everything each frame before drawing
38 39 40 41 42 |
# File 'lib/NanoLife.rb', line 38 def update if @running # and delta is met @grid.update end end |