Arquivo Ruby pisca e fecha.
30/08/2018
0
Mestres! sou iniciante em Ruby, estou com dificuldades em um programinha onde o arquivo pisca e fecha em seguida.
Grato.
Grato.
Gilson Rocha
Curtir tópico
+ 0
Responder
Posts
06/09/2018
Gilson Rocha
require_relative 'shuriken'
class MeuJogo < GameWindow
def initialize
super 800, 600, false
@sprite = GameObject.new 0, 0, 72, 72, :img1, Vector.new(-14, -14)
@state = :new
@font = Res.font(:font1, 16)
@btn = Button.new(350, 285, @font, 'Jogar', :btn) {
@sprite.x = 364
@sprite.y = 264
@shurikens = []
@shuriken_prob = 0.005
@frame_counter = 0
@score = 0
@state = :playing
}
end
def needs_cursor?
@state != :playing
end
def update
if @state == :playing
KB.update
if rand < @shuriken_prob
pos = rand(4)
x = y = dir = nil
case pos
when 0 then x = 5 + rand(771); y = 605; dir = :up
when 1 then x = -25; y = 5 + rand(571); dir = :right
when 2 then x = 5 + rand(771); y = -25; dir = :down
else x = 805; y = 5 + rand(571); dir = :left
end
speed = 2 + rand(3)
@shurikens << Shuriken.new(x, y, dir, speed)
end
@shuriken_prob += 0.000005
@frame_counter += 1
if @frame_counter == 60
@score += 1
@frame_counter = 0
end
@sprite.x -= 3 if KB.key_down? Gosu::KbLeft
@sprite.x += 3 if KB.key_down? Gosu::KbRight
@sprite.y -= 3 if KB.key_down? Gosu::KbUp
@sprite.y += 3 if KB.key_down? Gosu::KbDown
@shurikens.each { |s|
result = s.update(@sprite)
if result == :dead; return @state = :end
elsif s.dead; @shurikens.delete s; end
}
else
Mouse.update
@btn.update
end
end
def draw
clear 0xabcdef
if @state == :playing
@sprite.draw
@shurikens.each { |s| s.draw }
@font.draw @score, 5, 580, 0, 1, 1, 0xff000000
else
@btn.draw
@font.draw_rel "Fim de jogo. Você fez #{@score} pontos", 400, 250, 0, 0.5, 0, 1, 1, 0xff000000 if @state == :end
end
end
end
MeuJogo.new.show
# Amigos não esquecendo sou novo aqui, caso esteja postando errado avisem-me.
Grato.
class MeuJogo < GameWindow
def initialize
super 800, 600, false
@sprite = GameObject.new 0, 0, 72, 72, :img1, Vector.new(-14, -14)
@state = :new
@font = Res.font(:font1, 16)
@btn = Button.new(350, 285, @font, 'Jogar', :btn) {
@sprite.x = 364
@sprite.y = 264
@shurikens = []
@shuriken_prob = 0.005
@frame_counter = 0
@score = 0
@state = :playing
}
end
def needs_cursor?
@state != :playing
end
def update
if @state == :playing
KB.update
if rand < @shuriken_prob
pos = rand(4)
x = y = dir = nil
case pos
when 0 then x = 5 + rand(771); y = 605; dir = :up
when 1 then x = -25; y = 5 + rand(571); dir = :right
when 2 then x = 5 + rand(771); y = -25; dir = :down
else x = 805; y = 5 + rand(571); dir = :left
end
speed = 2 + rand(3)
@shurikens << Shuriken.new(x, y, dir, speed)
end
@shuriken_prob += 0.000005
@frame_counter += 1
if @frame_counter == 60
@score += 1
@frame_counter = 0
end
@sprite.x -= 3 if KB.key_down? Gosu::KbLeft
@sprite.x += 3 if KB.key_down? Gosu::KbRight
@sprite.y -= 3 if KB.key_down? Gosu::KbUp
@sprite.y += 3 if KB.key_down? Gosu::KbDown
@shurikens.each { |s|
result = s.update(@sprite)
if result == :dead; return @state = :end
elsif s.dead; @shurikens.delete s; end
}
else
Mouse.update
@btn.update
end
end
def draw
clear 0xabcdef
if @state == :playing
@sprite.draw
@shurikens.each { |s| s.draw }
@font.draw @score, 5, 580, 0, 1, 1, 0xff000000
else
@btn.draw
@font.draw_rel "Fim de jogo. Você fez #{@score} pontos", 400, 250, 0, 0.5, 0, 1, 1, 0xff000000 if @state == :end
end
end
end
MeuJogo.new.show
# Amigos não esquecendo sou novo aqui, caso esteja postando errado avisem-me.
Grato.
Responder
Clique aqui para fazer login e interagir na Comunidade :)