6 ゲームに近い動きをさせる(Stagingの応用)2

6.3 物体の微量な移動と、現在位置

極座標
極座標

6.4 座標計算の基礎

直交座標
直交座標

6.5 物体に、手駒を追跡させてみる

追跡
追跡

ここまでの補足と実演例

6.6 (参考)forを使わない書き方

  1. 内包表記: map に変換される

     for(i<-1 to 20) yield s.circle(...)
     // ↑ と ↓ は 同じ意味
     (1 to 20).map{(i)=>s.circle(...)}
     (1 to 20).map((i)=>s.circle(...))
     (1 to 20).map(i=>s.circle(...))
     1.to(20).map(i=>s.circle(...))
    	
     // ちなみに 以下の2つも同じ意味
     1 to 20
     1.to(20)
     // だが、
     1 to 20.map(...)  // これは使えない(括弧がないと意味が変わるため)
    
  1. 繰り返し実行: foreach に変換される

     for(c<-cs) { ... }
     // ↑ と ↓ は 同じ意味
     cs.foreach(c=>{...})
    

6.7 (物体にとっての)危険地帯を作ってみる

  1. 四角い枠を作る

     val trap = s.rectangle(-50, -30, 100, 60)
     trap.fill(rancol)
    
  1. その中に入る物体を検出する

     cs.filter(c=>{
         val p=c.origin+c.offset
         p.x<50 && p.x>-50 && p.y<30 && p.y>-30
     })
    

6.8 物体の消去

6.9 物体の残存数をカウントし、不足分(の一部)を補充