ruby 音乐和图像初始化失败

ekqde3dh  于 2022-11-29  发布在  Ruby
关注(0)|答案(1)|浏览(128)

我试图用Gosu做一个多项选择音乐播放器,但是我想要的图片和音乐不能初始化,尽管程序在运行,它显示黑屏。

require 'gosu'
require './input_functions'
class MW < Gosu::Window
  def initialize
    super 200, 135
    @beth = Gosu::Image.new("media/beth.jpg")
    @song = Gosu::Song.new("media/3rdmovement.mp3")
    @song.play
  end
  def draw
    @beth.draw(0, 0)
  end
end
window = MW.new
window.show

但添加多项选择元素将不起作用(注意:read_integer_in_range是在输入函数中定义的,名称本身是自解释的)。完整代码:

require 'gosu'
require './input_functions'
class MW < Gosu::Window
  def initialize
    super 200, 135
    @beth = Gosu::Image.new("media/beth.jpg")
    @dimitri = Gosu::Image.new("media/dimitri.png")
    @vil = Gosu::Image.new("media/vilva.png")

    @song = Gosu::Song.new("media/3rdmovement.mp3")
    @song2=Gosu::Song.new("media/2ndwaltz.mp3")
    @song3=Gosu::Song.new("media/1stseason.mp3")
    read_integer_in_range( "What song you want play
      1st Spring
      2nd Waltz
      3rd movement", 1, 3)
choice = gets.chomp.to_i()
    
 case choice
    when 1
      @song3.play
      @vil.draw(0, 0)
    when 2
      @song2.play
      @dimitri.draw(0, 0)
    when 3
      @song.play
      draw_beth()
end

  end
end

def draw_beth
  @beth.draw(0, 0)
end

window = MW.new
window.show

所有的Png/Jpg和mp3文件工作得很好。
我试着把draw_beth分开来调用case,但是没有成功。我希望路过的人能帮助我解决这个问题

bvuwiixz

bvuwiixz1#

正如我所看到的,您正在使用GUI创建一个音乐播放器,如果您正在这样做,您不应该使用gets函数,而是应该跟踪光标的位置并返回一个测试值;例如:

def update
        @locs = [mouse_x, mouse_y]
        @cursor_choice_album = mouse_over_button(mouse_x, mouse_y)
    end

    def needs_cursor?; true; end
   
    def mouse_over_button(mouse_x, mouse_y)
        if ((mouse_x > 100 and mouse_x < 500) and (mouse_y < 500 and mouse_y > 100))
          return 1
    end

则可以在“button down ID”函数中使用case条件

相关问题