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