[問題] 區塊問題
環境: 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數位生活區 即時熱門文章
                            22
                        
                            45