pixelfaucet/examples/snow_scroll.cr

44 lines
817 B
Crystal

require "../src/game"
class Snow < PF::Game
@pixels : Slice(UInt32)
@last_shift : Float64 = 0.0
def initialize(*args, **kwargs)
super
@pixels = screen.pixels
clear(0, 0, 0x25)
end
def update(dt)
@last_shift += dt
end
def draw
if @last_shift >= 0.02
@last_shift = 0.0
@pixels.rotate!(-width)
0.upto(width - 1) do |x|
if rand(0..250) == 0
shade = rand(25_u8..255_u8)
@pixels[x] = PF::Pixel.new(shade, shade, shade).to_u32
else
@pixels[x] = 0x000025FF
end
end
end
0.upto(height - 1) do |y|
if rand(0..2) == 0
row = Slice(UInt32).new(@pixels.to_unsafe + (y * width), width)
row.rotate!(rand(-1..1))
end
end
end
end
engine = Snow.new(600, 400, 2)
engine.run!