Ignore:
Timestamp:
01/17/12 01:34:00 (12 years ago)
Author:
atzm
Message:
  • multi enemies support
File:
1 edited

Legend:

Unmodified
Added
Removed
  • pycodeshooter/trunk/shooter/trooper.js

    r106 r108  
    3232    this.colIdx = 0; 
    3333 
    34     this.update = function(enemy) { 
     34    this.update = function(enemies) { 
    3535        this.size += this.speed; 
    3636 
    37         // judge bullet 
    38         var delIdx = new Array(); 
    39         for (var i = 0; i < enemy.bullets.length; i++) { 
    40             if (touch(this.x, this.y, this.size, 
    41                       enemy.bullets[i].x, enemy.bullets[i].y, enemy.bullets[i].size)) 
    42                 delIdx.push(i); 
    43         } 
    44         enemy.delBullet(delIdx); 
    45  
    46         // judge enemy 
    47         if (touch(this.x, this.y, this.size, enemy.x, enemy.y, enemy.size) && enemy.life > 0) 
    48             enemy.life--; 
     37        for (var ei = 0; ei < enemies.length; ei++) { 
     38            var enemy  = enemies[ei]; 
     39            var delIdx = new Array(); 
     40 
     41            // judge bullet 
     42            for (var i = 0; i < enemy.bullets.length; i++) { 
     43                if (touch(this.x, this.y, this.size, 
     44                          enemy.bullets[i].x, enemy.bullets[i].y, enemy.bullets[i].size)) 
     45                    delIdx.push(i); 
     46            } 
     47            enemy.delBullet(delIdx); 
     48 
     49            // judge enemy 
     50            if (touch(this.x, this.y, this.size, enemy.x, enemy.y, enemy.size) && enemy.life > 0) 
     51                enemy.life--; 
     52        } 
    4953    }; 
    5054 
     
    121125    }; 
    122126 
    123     this.update = function(enemy) { 
    124         var delIdx = null; 
    125  
     127    this.update = function(enemies) { 
    126128        // update my action 
    127         this.actList.update(this, enemy); 
     129        this.actList.update(this, enemies); 
    128130 
    129131        // update bomb 
    130132        if (this.bomb) { 
    131             this.bomb.update(enemy); 
     133            this.bomb.update(enemies); 
    132134            if (this.bomb.vanished()) 
    133135                this.bomb = null; 
     
    135137 
    136138        // update/delete my bullets 
    137         delIdx = new Array(); 
    138         for (var i = 0; i < this.bullets.length; i++) { 
    139             this.bullets[i].next(); 
    140  
    141             if (this.bullets[i].vanished()) 
    142                 delIdx.push(i); 
    143         } 
    144         this.delBullet(delIdx); 
    145  
    146         // judge/delete hit bullets 
    147         delIdx = new Array(); 
    148         for (var i = 0; i < enemy.bullets.length; i++) { 
    149             if (touch(this.x, this.y, this.hitSize, 
    150                       enemy.bullets[i].x, enemy.bullets[i].y, enemy.bullets[i].size)) 
    151                 delIdx.push(i); 
    152         } 
    153         enemy.delBullet(delIdx); 
    154  
    155         // update life 
    156         if (delIdx.length > 0 && this.life > 0) 
    157             this.life--; 
     139        { 
     140            var delIdx = new Array(); 
     141            for (var i = 0; i < this.bullets.length; i++) { 
     142                this.bullets[i].next(); 
     143 
     144                if (this.bullets[i].vanished()) 
     145                    delIdx.push(i); 
     146            } 
     147            this.delBullet(delIdx); 
     148        } 
     149 
     150        // update/delete enemies' bullets 
     151        { 
     152            var hit = false; 
     153 
     154            for (var ei = 0; ei < enemies.length; ei++) { 
     155                var enemy  = enemies[ei]; 
     156                var delIdx = new Array(); 
     157 
     158                // judge/delete hit bullets 
     159                for (var i = 0; i < enemy.bullets.length; i++) { 
     160                    if (touch(this.x, this.y, this.hitSize, 
     161                              enemy.bullets[i].x, enemy.bullets[i].y, enemy.bullets[i].size)) 
     162                        delIdx.push(i); 
     163                } 
     164 
     165                enemy.delBullet(delIdx); 
     166 
     167                if (delIdx.length > 0) 
     168                    hit = true; 
     169            } 
     170 
     171            // update my life 
     172            if (hit && this.life > 0) 
     173                this.life--; 
     174        } 
    158175    }; 
    159176 
Note: See TracChangeset for help on using the changeset viewer.