...

View Full Version : event2.poll interference?



fuubi
03-22-2010, 10:33 PM
Hi!
I've just started playing around in Ruby, and I have started to make a small space-shooter game, andI was hoping someone here could help me with a problem I have.

The way my code is now I have two event2.poll: one for shooting (sensing mouse click) and the other sensing any key to close (will be changed later to just ESC), and for some reason since I added the second even2.poll the first one only works every other mouse click.

Here's my code:



include Math

SDL.init( SDL::INIT_AUDIO|SDL::INIT_VIDEO )
screen = SDL::setVideoMode(640,480,16,SDL::FULLSCREEN)

head = SDL::Surface.loadBMP("head.bmp")
head.setColorKey( SDL::SRCCOLORKEY , head[0,0])
$head = head.displayFormat
$cMaph = $head.makeCollisionMap

SDL::Mouse.hide


class Ship

def initialize
@ar = []
@m_x = 0
@m_y = 0


end

def move

@ar[0, 1] = SDL::Mouse.state
@m_x = @ar[0]
@m_y = @ar[1]

[@m_x, @m_y]

end


def draw(screen)

SDL.transformBlit($head,screen,270,1,1,$head.w/2,$head.h/2,@ar[0],@ar[1],0 )

end

end

class Shot

def initialize(m_x, m_y)
@s_x = m_x
@s_y = m_y

end

def move
@s_y -= 1

@s_y

end

def draw(screen)
SDL.transformBlit($head,screen,270,1,1,$head.w/2,$head.h/2,@s_x,@s_y,0 )

end


end

class Enemy

def initialize
@e_x = srand(550) + 50
@e_y = 0
end

end


event = SDL::Event.new
ship1 = Ship.new
shot = []
s_count = 0

while true

screen.fillRect(0,0,640,480,0)

m_x, m_y = ship1.move
ship1.draw(screen)

while event2 = SDL::Event2.poll
case event2
when SDL::Event2::MouseButtonDown
for shoot in shot << Shot.new(m_x, m_y)
end
end
end

shot.each {|shoot|

s_y = shoot.move
shoot.draw(screen)

s_count += 1

if s_y < 0 - $head.h/2
shot.delete_at(s_count - 1)
end
}
s_count = 0

screen.updateRect(0,0,0,0)

while event = SDL::Event2.poll
case event
when SDL::Event2::KeyDown, SDL::Event2::Quit
exit
end
end

"if event.poll != 0 then
if event.type==SDL::Event::QUIT then
break
end
if event.type==SDL::Event::KEYDOWN then
exit if event.keySym==SDL::Key::ESCAPE
end
end"

end

Thanks for any help.



EZ Archive Ads Plugin for vBulletin Copyright 2006 Computer Help Forum