Random Bouncy particles using ruby
i'm exploring new ruby gems, so i found a gem called gosu, a game engine gem cross platform, i like it as it is really easy, check the code snippit below, i created a particle with some random behaviour and add 200 of them to the windows and let them behave as they want :)
require 'gosu'
$width, $height = 200, 200
$number_of_particles = 200
class Quad
def initialize
@pos = {x:rand($width), y:rand($width)}
@vel = { x:(rand(5)+1)*[1,-1].sample, y:(rand(5)+1)*[1,-1].sample }
@size = rand(4)*[1,-1].sample
@color = [ Gosu::Color::GRAY, Gosu::Color::WHITE,
Gosu::Color::AQUA, Gosu::Color::RED,
Gosu::Color::GREEN, Gosu::Color::BLUE,
Gosu::Color::YELLOW, Gosu::Color::FUCHSIA,
Gosu::Color::CYAN ].sample
end
def update
@vel[:x] = @vel[:x] * -1 if @pos[:x] <= 0 or @pos[:x] >= $width
@vel[:y] = @vel[:y] * -1 if @pos[:y] <= 0 or @pos[:y] >= $height
@pos[:x] += @vel[:x]
@pos[:y] += @vel[:y]
end
def draw win
win.draw_quad @pos[:x]-@size, @pos[:y]-@size, @color,
@pos[:x]+@size, @pos[:y]-@size, @color,
@pos[:x]+@size, @pos[:y]+@size, @color,
@pos[:x]-@size, @pos[:y]+@size, @color
end
end
class GameWindow < Gosu::Window
def initialize
super $width, $height, false
self.caption = "Quads"
@quads = []
$number_of_particles.times { @quads << Quad.new }
end
def update
@quads.each {|q| q.update }
end
def draw
color = Gosu::Color::WHITE
draw_quad 0, 0, color, $width, 0, color, $width, $height, color, 0, $height, color
@quads.each { |q| q.draw self }
end
end
window = GameWindow.new
window.showWritten by Emad Elsaid
Related protips
Have a fresh tip? Share with Coderwall community!
Post
Post a tip
Best
#Ruby
Authors
Did you know?
Gaming sites are targets for account takeover and payment fraud in the browser. Stolen sessions and tampered checkout scripts sit beside the game the player is using.
Security insights from Cside
Sponsored by #native_company# — Learn More
#native_title#
#native_desc#