| 赞 | 72 |
| VIP | |
| 好人卡 | |
| 积分 | 23 |
| 经验 | |
| 最后登录 | 2022-3-9 |
| 在线时间 | 4033 小时 |
…あたしは天
- 梦石
- 0
- 星屑
- 2308
- 在线时间
- 4033 小时
- 注册时间
- 2010-10-4
- 回帖
- 10548
 
|
发表于 2014-3-30 16:03:06
|
显示全部楼层
本帖最后由 taroxd 于 2014-3-31 18:45 编辑
[pre lang="ruby" line="1"]
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[/pre]
汗,明明定义了each_with_index还这样玩……而且j的范围还打错了(虽然没什么大碍)
美观大方~
[pre lang="ruby" line="1"]
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
[/pre]
另外 @game2048.[](i, j) 写成 @game2048[i, j] 就好
还有update方法可以写简单点, 改起来也方便~ 比如加个移动失败的功能
[pre lang="ruby" line="1"]
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
[/pre]
然后,如果要加得分功能的话,可以对merge_value重定义,来增加@score即可
当然score要初始化为零,并且做好attr_reader :score |
|