CS-PROJECTS / towerofhanoi / Tower.java
Tower.java
Raw
package towerofhanoi;

// Virginia Tech Honor Code Pledge:
//
// As a Hokie, I will conduct myself with honor and integrity at all times.
// I will not lie, cheat, or steal, nor will I accept the actions of those who
// do.
// -- Jordan Harrington (jordanha23)

/**
 * @author Jordan Harrington
 * @version <3/25/2020>
 */

public class Tower extends LinkedStack<Disk> {

    private Position position;

    /**
     * Constructor
     * 
     * @param position
     *            - the position of the tower
     */
    public Tower(Position position) {
        super();
        this.position = position;
    }


    /**
     * Getter for position
     * 
     * @return the position of the tower
     */
    public Position position() {
        return position;
    }


    @Override
    /**
     * @param disk
     *            - the disk being pushed on the tower
     */
    public void push(Disk disk) {

        if (disk == null) {
            throw new IllegalArgumentException();
        }
        else if (this.isEmpty()) {
            super.push(disk);
        }
        else if (this.peek().compareTo(disk) != 1) {
            throw new IllegalStateException();
        }
        else {
            super.push(disk);
        }

    }

}