作者zx123456i (壁虎'.'a)
看板Ruby
标题[问题] 区块问题
时间Sun Apr 24 22:53:34 2011
环境: 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