//--------------------------------------------- class Ship { float shipX, shipY, velX, velY; int coolDown; Trail trail; //--------------------------------------------- Ship(int x, int y){ shipX = x; shipY = y; coolDown = 0; trail = new Trail(20,3,255,128,128); } //--------------------------------------------- void update(){ //Updates the ship's position if(coolDown>0) coolDown--; velX = velX*0.9; velY = velY*0.9; shipX = shipX+velX; shipY = shipY+velY; trail.update(shipX, shipY); visualize(); } //--------------------------------------------- void visualize(){ //Draws the ship stroke(255); float angle = atan2( mouseY-shipY, mouseX-shipX ); rotatedLine(shipX, shipY, 0, 0, -3, 5, angle); rotatedLine(shipX, shipY, 0, 0, -3, -5, angle); rotatedLine(shipX, shipY,-3, 5, 10, 0, angle); rotatedLine(shipX, shipY,-3,-5, 10, 0, angle); } //--------------------------------------------- void thrust(){ stroke(255,128,128); float forceMag = dist(mouseX,mouseY,shipX,shipY); float forX = (mouseX-shipX)/forceMag; float forY = (mouseY-shipY)/forceMag; velX = velX + forX*constrain(forceMag,0.2,1.0); velY = velY + forY*constrain(forceMag,0.2,1.0); float angle = atan2( mouseY-shipY, mouseX-shipX ); rotatedLine(shipX, shipY,-2, 2, -8, 0, angle); rotatedLine(shipX, shipY,-2,-2, -8, 0, angle); } //--------------------------------------------- void kill(){ explosion.addBlast(shipX,shipY,1.0,120,60,80,128,255); coolDown = 40; gameOver = true; } }