- public PImage bulletIm, playerIm;
- public ArrayList<Entity> entities = new ArrayList<Entity>();
- public ArrayList<Entity> toRemove = new ArrayList<Entity>();
- void updateCollisions() {
- for(int i = 0; i < entities.size(); i++)
- for(int j = i+1; j < entities.size(); j++)
- if(entities.get(i).ally != entities.get(j).ally && entities.get(i).isColliding(entities.get(j))) {
- toRemove.add(entities.get(i));
- toRemove.add(entities.get(j));
- }
- for(Entity e : toRemove) {
- e.destroy();
- entities.remove(e);
- }
- }
- class Entity {
- protected int x, y, w, h;
- protected PImage im;
- protected boolean ally;
- Entity(int x, int y, PImage im, boolean ally) {
- this.x = x;
- this.y = y;
- this.w = im.width;
- this.h = im.height;
- this.im = im;
- this.ally = ally;
- }
- public boolean isCollinding(Entity e) {
- return !(x+w<e.x || x>e.x+e.w || y+h<e.y || y>e.y+e.h);
- }
- public void update() {
- }
- public void render() {
- image(im, x, y);
- }
- public void destroy() { //sera exécuté lorsque l'objet sera détruit
- }
- }
- class Vaisseau extends Entity {
- protected int delay;
- Vaiseau(int x, int y, PImage im, boolean player) {
- super(x, y, im, player);
- }
- public void update() {
- delay ++;
- }
- protected void tir() {
- if(delay < 10)
- return;
- delay = 0;
- entities.add(new Bullet(x+(ally ? w : -bulletIm.width), y+h/2-bulletIm.height));
- }
- }
- class Bullet extends Entity {
- protected int speed;
- Bullet(int x, int y, boolean ally) {
- super(x, y, bulletIm, ally);
- speed = ally ? 3 : -3;
- }
- public void update() {
- x += speed;
- }
- }
- class Joueur extends Vaisseau {
- protected int vitesse;
- Joueur(int x, int y) {
- super(x, y, PlayerIm, true);
- }
- public void update() {
- if(gauche) //à toi de gérer tes touches
- x = max(x-vitesse, 0);
- if(droite)
- x = min(x+vitesse, 1000-w)
- if(haut)
- y = max(y-vitesse, 0)
- if(bas)
- y = min(y+vitesse, 600-h)
- if(fire)
- tir();
- }
- }