- ArrayList<Entity> entities = new ArrayList<Entity>();
- ArrayList<Entity> toRemove = new ArrayList<Entity>();
- PImage joueur;
- void setup()
- {
- size(1000, 600, P3D);
- background(0);
- joueur = loadImage("...");
- }
- void draw()
- {
- entities.add(new Joueur(100, 300));
- }
- //====================================================================================================================//
- // CLass //
- //====================================================================================================================//
- abstract class Entity {
- int x, y, w, h;
- PImage im;
- 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;
- }
- boolean isColliding(Entity e)
- {
- return !(x+w<e.x || x>e.x+e.w || y+h<e.y || y>e.y+e.h);
- }
- void update()
- {
- }
- void render()
- {
- image(im, x, y);
- }
- void destroy() //sera exécuté lorsque l'objet sera détruit
- {
- }
- }
- class Vaisseau extends Entity {
- int delay;
- Vaisseau(int x, int y, PImage im, boolean player) {
- super(x, y, im, player);
- this.ally = player;
- }
- void update() {
- delay ++;
- }
- void tir() {
- if (delay < 10)
- {
- return;
- }
- delay = 0;
- entities.add(new Bullet(x+(ally ? w : -tir.width), y+h/2-tir.height, ally));
- }
- }
- class Joueur extends Vaisseau {
- int vitesse;
- Joueur(int x, int y) {
- super(x, y, joueur, true);
- }
- 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();
- }
- }
- class Bullet extends Entity {
- int speed;
- Bullet(int x, int y, boolean ally) {
- super(x, y, tir, ally);
- speed = ally ? 3 : -3;
- }
- void update() {
- x += speed;
- }
- }
- 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);
- }
- }