// Archibald Haddock (123456789)
// COMP 202-A, Section 0 (Fall 2007)
// Instructor: Cuthbert Calculus
// Assignment 0, Question 0

/**
 * A <code>RaceTrack</code> object represents the track on which a bike race
 * takes place and on which <code>Cyclists</code> will race. It has a given
 * number of laps, a lap length, and a terrain type (flat or hilly). 
 */
public class RaceTrack {
	/**
	 * Represents hilly terrain for the <code>RaceTrack</code>
	 */
    public static final boolean HILLY = false;
    /**
     * Represents flat terrain for the <code>RaceTrack</code>
     */
    public static final boolean FLAT = true;
    
    private final int numberLaps;
    private final int lapLength;
    private final boolean terrainType;
    
    /**
     * Creates a new <code>RaceTrack</code>.
     * @param numberLaps the number of laps the <code>RaceTrack</code> will have
     * @param lapLength the number of laps the <code>RaceTrack</code> will have
     * @param terrainType the type of terrain on which the
     *        <code>RaceTrack</code> is built. 
     */
    public RaceTrack(int numberLaps, int lapLength, boolean terrainType) {
        this.lapLength = lapLength;
        this.numberLaps = numberLaps;
        this.terrainType = terrainType;
    }
    
    /**
     * Returns the length of a lap on the <code>RaceTrack</code>.
     * @return the length of a lap on the <code>RaceTrack</code>
     */
    public int getLapLength() {
        return this.lapLength;
    }
    
    /**
     * Returns the number of laps of which the <code>RaceTrack</code> consists.
     * @return the number of laps of which the <code>RaceTrack</code> consists
     */
    public int getNumberLaps() {
        return this.numberLaps;
    }
    
    /**
     * Returns the type of terrain on which the <code>RaceTrack</code> was
     * built 
     * @return the type fo terrain on which the <code>RaceTrack</code> was built
     */
    public boolean getTerrainType() {
        return this.terrainType;
    }
}
