//GEN-BEGIN:header
import chess.*;
import java.awt.*;
import java.text.DecimalFormat;

/**
 * DriveCar.java
 *
 * Created on June 15, 2006, 8:47 PM by Jeremy
 */
public class DriveCar {
    public static void main(String[] args) {//GEN-END:header

        double heading;
        double steerAngle;
        double speed;
        double x;
        double y;
        char key;
        
        Screen gameScreen= Chess.newScreen(600,600);
        Sprite car= gameScreen.newSprite("sprites/miniCooper.png",300,300);
        
        speed= 0;
        heading= car.getOrientation() - 90 ;
        steerAngle= 0;
        
        x= car.getPositionX();
        y= car.getPositionY();
        
        DecimalFormat format= new DecimalFormat("0.00");
        
        while ( true ) {
            key=gameScreen.getKey();
            if ( key=='f' ) {
                speed= speed + 1;
            } else if ( key=='r') {
                speed= speed - 1;
            } else if ( key=='k') {
                steerAngle= -40;
            } else if ( key=='l') {
                steerAngle= +40;
            } 
            
            gameScreen.setColor(Color.white);
            gameScreen.fillRect(0,0,gameScreen.getWidth(),20);
            gameScreen.setColor(Color.lightGray);
            gameScreen.drawString("speed: "+format.format(speed)+
                    "  steerAngle:"+format.format(steerAngle), 0, 20 );
            
            if ( speed > 10 ) speed=10;  // pixels/frame
            if ( speed < -10 ) speed=-10;
            
            if ( steerAngle > 40 ) steerAngle=40; // degrees
            if ( steerAngle < -40 ) steerAngle=-40;
            
            //speed= speed * 0.98;  // friction
            steerAngle= steerAngle * 0.9;  // wheel wants to straighten out
            
            heading+= steerAngle * speed / 100;
            
            x+= speed * Math.cos( heading * Math.PI / 180 );
            y+= speed * Math.sin( heading * Math.PI / 180 ); 
            
            car.setOrientation( heading + 90 );
            car.setPosition(x,y);
            
            if ( x < 0 ) x=0;
            if ( x > gameScreen.getWidth() ) x=gameScreen.getWidth();
            
            if ( y < 0 ) y=0;
            if ( y > gameScreen.getHeight() ) y=gameScreen.getHeight();
            
            Chess.waitForNextFrame(30);
        }
       
        
    } //main//GEN-BEGIN:footer
    
} //class
//GEN-END:footer
