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