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