import edu.neu.ccs.*;
import edu.neu.ccs.gui.*;
import edu.neu.ccs.codec.*;
import edu.neu.ccs.console.*;
import edu.neu.ccs.filter.*;
import edu.neu.ccs.jpf.*;
import edu.neu.ccs.parser.*;
import edu.neu.ccs.pedagogy.*;
import edu.neu.ccs.quick.*;
import edu.neu.ccs.util.*;

import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.awt.font.*;
import java.awt.image.*;
import javax.swing.*;
import javax.swing.border.*;
import java.io.*;
import java.util.*;
import java.math.*;
import java.beans.*;
import java.lang.reflect.*;
import java.net.URL;
import java.util.regex.*;
import java.text.ParseException;

public class Ship2
    extends PaintableSequenceComposite
{
    // the internal PaintableSequence
    
    PaintableSequence sequence = getPaintableSequence();
    
    // ship body
    
    float[][] triangleVertex = { { 0, 0 }, { 50, 25 }, { 0, 50 } };
    
    PolygonShape triangle = new PolygonShape(triangleVertex);
    
    Color fill = Colors.silver;
    
    Color edge = Colors.black;
    
    ShapePaintable body =
        new ShapePaintable(triangle, PaintMode.FILL_DRAW, fill, edge);
    
    // ship body center
    
    XPoint2D center = new XPoint2D(25, 25);
    
    // ship tail
    
    XRect tailRect = new XRect(-10, 23, 10, 4);
    
    Color tailFill = Colors.red;
    
    ShapePaintable tail =
        new ShapePaintable(tailRect, PaintMode.FILL, tailFill);
   
    // member data to remember the net turn angle
    
    double degrees = 0;
    
     
    public Ship2() {
        setDefaultCenter(center);
        
        sequence.addPaintable(body);
        sequence.addPaintable(tail);
    }
    
    
    public void turn(double degrees) {
        this.degrees += degrees;
        rotate(degrees);
    }
}

