Advertisement
itblanco

Asteroids

Sep 1st, 2020
1,118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.80 KB | None | 0 0
  1. import toxi.geom.*;
  2. import toxi.processing.*;
  3.  
  4. Polygon2D ship, asteroid;
  5. ToxiclibsSupport tls;
  6.  
  7. void setup() {
  8.   size(1300, 700);
  9.   tls = new ToxiclibsSupport(this);
  10.   ship = new Polygon2D();
  11.   float size = 10;
  12.   ship.add(0, -size);
  13.   ship.add(size, size);
  14.   ship.add(0, size*0.5);
  15.   ship.add(-size, size);
  16.   ship.translate(width/2, height/2);
  17.  
  18.   asteroid = generateAsteroid();
  19. }
  20.  
  21. void draw() {
  22.   background(0);
  23.   Vec2D mouse = new Vec2D(mouseX, mouseY);
  24.   asteroid.center(mouse);
  25.   if (ship.intersectsPolygon(asteroid)) {
  26.     fill(255, 0, 0);
  27.   } else {
  28.     noFill();
  29.   }
  30.  
  31.   stroke(255);
  32.   strokeJoin(ROUND);
  33.   tls.polygon2D(ship);
  34.   tls.polygon2D(asteroid);
  35. }
  36.  
  37. Polygon2D generateAsteroid() {
  38.   Polygon2D poly = new Polygon2D();
  39.   int pts = floor(random(5, 15));
  40.   for (int i = 0; i < pts; i++) {
  41.     float angle = TWO_PI / (float)pts * i;
  42.     poly.add(Vec2D.fromTheta(angle).scaleSelf(random(40, 100)));
  43.   }  
  44.   poly.scale(random(0.5, 1.2));
  45.   return poly;
  46. }
  47.  
  48. void mousePressed() {
  49.   asteroid = generateAsteroid();
  50. }
  51.  
  52. static class Asteroid {
  53.   static ArrayList<Asteroid> asteroidList = new ArrayList<Asteroid>();
  54.   Polygon2D shape;
  55.   PApplet parent;
  56.  
  57.   public Asteroid(PApplet parent) {
  58.     this.parent = parent;
  59.     shape = generateAsteroid();
  60.    
  61.     asteroidList.add(this);
  62.   }
  63.  
  64.   public Polygon2D generateAsteroid() {
  65.     Polygon2D poly = new Polygon2D();
  66.     int pts = floor(parent.random(5, 15));
  67.     for (int i = 0; i < pts; i++) {
  68.       float angle = TWO_PI / (float)pts * i;
  69.       poly.add(Vec2D.fromTheta(angle).scaleSelf(parent.random(40, 100)));
  70.     }  
  71.     poly.scale(parent.random(0.5, 1.2));
  72.     return poly;
  73.   }
  74.  
  75.   public void destroy() {
  76.     asteroidList.remove(this);
  77.   }
  78. }
  79.  
  80. class Ship {
  81.   Polygon2D shape;
  82.  
  83.   Ship() {
  84.    
  85.   }
  86. }
  87.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement