Re: [問題] 區塊問題
※ 引述《zx123456i (壁虎'.'a)》之銘言:
: 底下是有問題的原始碼:
: @sb.reject!{|sb|
: if sb.y<-10
: true
: else
: @enemy.each{|enemy|
: ex=enemy.x;ey=enemy.y
: ew=enemy.w;eh=enemy.h
: if Gosu::distance(sb.x+2,sb.y+5,ex+ew/2,ey+eh/2)<(ew+eh)/2
: sb.hurt(enemy)
: true
: else
: false
: end
: }
: end
: }
問題出在這段程式碼沒錯
你作為reject參數的block,在sb.y < -10的時候會回傳true沒錯,
可是sb.y >= -10的時候呢?
我們都知道,沒明確指定回傳值的時候,
Ruby會把最後一個statement的return值回傳回去
在sb.y >= -10的時候,你的block的最後一個statement是@enemy.each { ... }
each到底會回傳什麼東西呢?從irb測試一下就知道了
ruby-1.9.2-p0 > [1,2,3].each { |x| p x }
1
2
3
=> [1, 2, 3]
看到了嗎,each的回傳值是陣列本身,而陣列在作為真值判斷的時候是會被當成true的
所以自然那個子彈就被刪掉了
--
難得看到有人在玩Gosu... XD
--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.25.234.132
推
04/25 17:17, , 1F
04/25 17:17, 1F
討論串 (同標題文章)
Ruby 近期熱門文章
PTT數位生活區 即時熱門文章