import greenfoot.*;  

import java.util.*;


| An explosion. It starts by expanding and then collapsing. | The explosion will explode other obejcts that the explosion intersects. | | @author Poul Henriksen | @author Michael Kölling | | @version 1.1 | public class Explosion extends Actor {
| How many images should be used in the animation of the explostion | private final static int IMAGE_COUNT= 8;
| The images in the explosion. This is static so the images are not | recreated for every object (improves performance significantly). | private static GreenfootImage[] images;
| Current size of the explosion | private int size=0;
| How much do we increment the index in the explosion animation. | private int increment=1; public Explosion() { initialiseImages(); setImage(images[0]); Greenfoot.playSound("Explosion.wav"); }
| Create the images for explosion. | public synchronized static void initialiseImages() { if(images == null) { GreenfootImage baseImage = new GreenfootImage("explosion.png"); int maxSize = baseImage.getWidth()*4; int delta = maxSize / (IMAGE_COUNT+1); int size = 0; images = new GreenfootImage[IMAGE_COUNT]; for(int i=0; i < IMAGE_COUNT; i++) { size = size + delta; images[i] = new GreenfootImage(baseImage); images[i].scale(size, size); } } }
| EXPLODE! | public void act() { setImage(images[size]); size += increment; if(size>=IMAGE_COUNT) { increment = -increment; size += increment; } explodeOthers(); if(size <= 0) { getWorld().removeObject(this); } }
| Explodes all intersecting objects. | private void explodeOthers() { List<Actor> actors = getIntersectingObjects(Actor.class); for (Actor a : actors) { if( ! (a instanceof Explosion)) { getWorld().addObject(new Explosion(), a.getX(), a.getY()); getWorld().removeObject(a); } } } }
top, use, map, class Explosion

.   Explosion
.   initialiseImages
.   act
.   explodeOthers




69 neLoCode + 13 LoComm