# Sprites... I suck at them....(rubygame)

**URL:** <https://www.ruby-forum.com/t/sprites-i-suck-at-them-rubygame/225926>\
**Category:** Ruby\
**Created:** [October 19, 2006, 4:16am UTC](https://www.ruby-forum.com/t/sprites-i-suck-at-them-rubygame/225926 "2006-10-19T04:16:12Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![mohammad](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/e274bd/32.png) [@mohammad](https://www.ruby-forum.com/u/mohammad)\
**Post date:** [October 19, 2006, 4:16am UTC](https://www.ruby-forum.com/t/sprites-i-suck-at-them-rubygame/225926/1 "2006-10-19T04:16:12Z")

</div>

okay here is my little sprite file with rubygame

require “rubygame”  
$stdout.sync = true  
Rubygame.init()

class Chr  
include Rubygame::Sprites::Sprite  
@@chrforward = Rubygame::Image.load(“forward.png”)  
@@chrleft = Rubygame::Image.load(“left.png”)  
@@chrright = Rubygame::Image.load(“right.png”)  
@@chrbackword = Rubygame::Image.load(“backwords.png”)  
@@chrforward.set\_colorkey(@@chrforward.get\_at([0,0]))  
@@chrleft.set\_colorkey(@@chrleft.get\_at([0,0]))  
@@chrright.set\_colorkey(@@chrright.get\_at([0,0]))  
@@chrbackword.set\_colorkey(@@chrbackword.get\_at([0,0]))

def load\_image\_for(dir)  
if dir == “back” || dir == “backword”  
return @@chrbackword  
elsif dir == “left”  
return @@chrleft  
elsif dir == “right”  
return @@chrright  
elsif dir == “forward” || dir == “up”  
return @@chrforward  
end  
end

def initalize(x,y,starter=“forward”)  
@image = load\_image\_for starter  
@rect = Rubygame::Rect.new(x,y,\*@@chrforward.size)  
end

def update\_image(dir)  
load\_image\_for dir  
end

def update(dir)  
self.update\_image(dir)  
@rect = @image.size  
end

end

class MyNPC  
include Rubygame::Sprites::Sprite  
@@npcforward = Rubygame::Image.load(“npcforward.png”)  
@@npcleft = Rubygame::Image.load(“npcleft.png”)  
@@npcright = Rubygame::Image.load(“npcright.png”)  
@@npcbackword = Rubygame::Image.load(“npcbackwords.png”)  
@@npcforward.set\_colorkey(@@npcforward.get\_at([0,0]))  
@@npcleft.set\_colorkey(@@npcleft.get\_at([0,0]))  
@@npcright.set\_colorkey(@@npcright.get\_at([0,0]))  
@@npcbackword.set\_colorkey(@@npcbackword.get\_at([0,0]))

def load\_image\_for(dir)  
if dir == “back” || dir == “backword”  
return @@npcbackword  
elsif dir == “left”  
return @@npcleft  
elsif dir == “right”  
return @@npcright  
elsif dir == “forward” || dir == “up”  
return @@npcforward  
end  
end

def initalize(x,y,starter=“forward”)  
@image = load\_image\_for starter  
@rect = Rubygame::Rect.new(x,y,\*@@npcforward.size)  
end

def update\_image(dir)  
load\_image\_for dir  
end

def update(dir)  
self.update\_image(dir)  
@rect = @image.size  
end

end

class ChrGroup \< Rubygame::Sprites::Group  
include Rubygame::Sprites::UpdateGroup  
end

screen = Rubygame::Screen.set\_mode([320,240])  
screen.set\_caption(“Sprite test”,“SPRITE TEST”)  
background = Rubygame::Surface.new(screen.size)

mainchr = Chr.new  
npc = MyNPC.new  
mainchr.initalize(0,0)  
npc.initalize(50,50)

chrs = ChrGroup.new  
chrs.push(mainchr,npc)  
chrs.draw(screen)

catch(:rubygame\_quit) do  
loop do  
chrs.undraw(screen,background)  
chrs.update(“left”)  
puts “left”  
sleep 2  
chrs.update(“up”)  
puts “up”  
sleep 2  
chrs.update(“right”)  
puts “right”  
sleep 2  
chrs.update(“down”)  
puts “down”  
sleep 2  
chrs.draw(screen)  
screen.update()  
end  
end

Very messey I know! Well two problems with it…  
one:  
chrs.update doesn’t seem to be drawing them  
two:  
one the secound loop it crashes because then it dosn’t like  
chrs.undraw

is there a better placce for me to post these also does anyone know a  
good tut. on rubygame?
