本帖最后由 taroxd 于 2014-3-31 18:45 编辑
def draw_box for i in 0...4 for j in 0..4 if @game2048.[](i, j) != nil @background_sprite.bitmap.draw_text(130+80*j, 100+60*i, 60, 24, @game2048.[](i, j), 1) end end end end
def draw_box
for i in 0...4
for j in 0..4
if @game2048.[](i, j) != nil
@background_sprite.bitmap.draw_text(130+80*j, 100+60*i, 60, 24, @game2048.[](i, j), 1)
end
end
end
end
汗,明明定义了each_with_index还这样玩……而且j的范围还打错了(虽然没什么大碍)
美观大方~
def draw_box @game2048.each_with_index do |n, i, j| @background_sprite.bitmap.draw_text(130+80*j, 100+60*i, 60, 24, n, 1) if n end end
def draw_box
@game2048.each_with_index do |n, i, j|
@background_sprite.bitmap.draw_text(130+80*j, 100+60*i, 60, 24, n, 1) if n
end
end
另外 @game2048.[](i, j) 写成 @game2048[i, j] 就好
还有update方法可以写简单点, 改起来也方便~ 比如加个移动失败的功能
def update super [:left, :right, :up, :down].each do |dir| if Input.trigger? dir.upcase if @game2048.move dir judge clear_box Sound.play_cursor draw_box else Sound.play_buzzer # 移动失败 end end end end
def update
super
[:left, :right, :up, :down].each do |dir|
if Input.trigger? dir.upcase
if @game2048.move dir
judge
clear_box
Sound.play_cursor
draw_box
else
Sound.play_buzzer # 移动失败
end
end
end
end
然后,如果要加得分功能的话,可以对merge_value重定义,来增加@score即可
当然score要初始化为零,并且做好attr_reader :score |