1. ArrayList<Entity> entities = new ArrayList<Entity>();
  2. ArrayList<Entity> toRemove = new ArrayList<Entity>();
  3. abstract class Entity {
  4. int x, y, w, h;
  5. PImage im;
  6. boolean ally;
  7. Entity(int x, int y, PImage im, boolean ally)
  8. {
  9. this.x = x;
  10. this.y = y;
  11. this.w = im.width;
  12. this.h = im.height;
  13. this.im = im;
  14. this.ally = ally;
  15. }
  16. boolean isColliding(Entity e)
  17. {
  18. return !(x+w<e.x || x>e.x+e.w || y+h<e.y || y>e.y+e.h);
  19. }
  20. void update()
  21. {
  22. }
  23. void render()
  24. {
  25. image(im, x, y);
  26. }
  27. void destroy() //sera exécuté lorsque l'objet sera détruit
  28. {
  29. }
  30. }
  31. class Vaisseau extends Entity {
  32. int delay;
  33. Vaisseau(int x, int y, PImage im, boolean player) {
  34. super(x, y, im, player);
  35. this.ally = player;
  36. }
  37. void update() {
  38. delay ++;
  39. }
  40. void tir() {
  41. if (delay < 10)
  42. {
  43. return;
  44. }
  45. delay = 0;
  46. entities.add(new Bullet(x+(ally ? w : -tir.width), y+h/2-tir.height, ally));
  47. }
  48. }
  49. class Joueur extends Vaisseau {
  50. int vitesse;
  51. Joueur(int x, int y) {
  52. super(x, y, joueur, true);
  53. }
  54. void update() {
  55. if (gauche) //à toi de gérer tes touches
  56. x = max(x-vitesse, 0);
  57. if (droite)
  58. x = min(x+vitesse, 1000-w);
  59. if (haut)
  60. y = max(y-vitesse, 0);
  61. if (bas)
  62. y = min(y+vitesse, 600-h);
  63. if (fire)
  64. tir();
  65. }
  66. }
  67. class Bullet extends Entity {
  68. int speed;
  69. Bullet(int x, int y, boolean ally) {
  70. super(x, y, tir, ally);
  71. speed = ally ? 3 : -3;
  72. }
  73. void update() {
  74. x += speed;
  75. }
  76. }
  77. void updateCollisions() {
  78. for(int i = 0; i < entities.size(); i++)
  79. for(int j = i+1; j < entities.size(); j++)
  80. if(entities.get(i).ally != entities.get(j).ally && entities.get(i).isColliding(entities.get(j))) {
  81. toRemove.add(entities.get(i));
  82. toRemove.add(entities.get(j));
  83. }
  84. for(Entity e : toRemove) {
  85. e.destroy();
  86. entities.remove(e);
  87. }
  88. }