class AnimImage { PImage image; int frames = 0; int tilewidth, tileheight; AnimImage(PImage image, int tilewidth, int tileheight) { this.image = image; this.tilewidth = tilewidth; this.tileheight = tileheight; frames = image.width/tilewidth; } void draw(float x, float y, int frame) { image(image, x,y, tilewidth, tileheight, frame*tilewidth, 0, (frame+1)*tilewidth, tileheight); } } abstract class Sprite { float x=0,y=0; float dx=0,dy=0; boolean alive = true; LevelScene level; abstract void draw(); abstract void update(); } class SpriteList { Vector sprites; SpriteList() { sprites = new Vector(); } void add(Sprite s) { sprites.addElement(s); } void remove(Sprite s) { sprites.removeElement(s); } int size() { return sprites.size(); } Sprite get(int i) { return (Sprite)sprites.elementAt(i); } void update() { Enumeration en = sprites.elements(); while (en.hasMoreElements()) { Sprite s = (Sprite)en.nextElement(); if (!s.alive) remove(s); else s.update(); } } void draw() { Enumeration en = sprites.elements(); while (en.hasMoreElements()) { Sprite s = (Sprite)en.nextElement(); s.draw(); } } }