[問題] 區塊問題
環境: Ruby1.9.2 , Gosu0.7.29
狀況:
最近用Gosu來開發小遊戲
(不會搞C++只好這樣...)
後來要增加功能而出現問題
剛開始找不出為什麼
只好把程式碼改寫
底下是有問題的原始碼:
@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
}
這段程式碼是要消除自己的子彈(sb)用的
@sb是陣列 於是利用reject!來處理
本來@enemy不是陣列 後來改成陣列用each處理就會有問題
當自己的子彈(sb)打到敵人(enemy)會消除 並對敵人造成傷害
但是卻變成自己的子彈(sb)出現就不見...
後來改成:
@enemy.each{|enemy|
ex=enemy.x;ey=enemy.y
ew=enemy.w;eh=enemy.h
@sb.reject!{|sb|
if sb.y <= -10
true
elsif Gosu::distance(sb.x+2,sb.y+5,ex+ew/2,ey+eh/2)<(ew+eh)/4
sb.hurt(enemy)
true
else
false
end
}
}
子彈就可以正常消除了
這樣看來是reject!的問題...
是因為包在其中區塊的真假值不會影響的關係嗎?
我不是很確定...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 125.232.138.159
討論串 (同標題文章)
Ruby 近期熱門文章
PTT數位生活區 即時熱門文章