Java-Adventure-Game / Java-Based Adventure Game main / AdventureGameModel / Passage.java
Passage.java
Raw
package AdventureGameModel;

import java.io.Serializable;

/**
 * The Passage class represents entries in a passage table.
 * A passage keeps track of information about an exit from a room.
 * This includes the direction of the exit and the room number.
 * If the passage is blocked, the passage keeps track of the
 * key required to move along this passage
 */
public class Passage implements Serializable {
    private String direction; // the direction of movement in the game
    private int destinationRoom; // the number of the room that this exit leads to
    private String keyName; // the name of the object required to move along this passage
    private boolean isBlocked; // a boolean to represent if the passage is blocked

    /**
     * MotionTableEntry constructor
     *
     * @param direction A string representation of a direction
     * @param roomNumber A string representation of a room number
     */
    public Passage(String direction, String roomNumber) {
        this.direction = direction;
        this.destinationRoom = Integer.parseInt(roomNumber);
        this.keyName = null;
    }

    /**
     * MotionTableEntry constructor
     *
     * @param direction A string representation of a direction
     * @param roomNumber A string representation of a room number
     * @param key A string representation of a key if the passage is blocked
     */
    public Passage(String direction, String roomNumber, String key) {
        this.direction = direction;
        this.destinationRoom = Integer.parseInt(roomNumber);
        this.keyName = key;
        this.isBlocked = true;
    }

    /**
     * Returns the direction associated with this motion table entry
     *
     * @return The direction to move in (e.g. "north", "south", etc.)
     */
    public String getDirection() {
        return this.direction;
    }

    /**
     * Returns the number of the room that this motion table entry leads to
     *
     * @return The number of the destination room
     */
    public int getDestinationRoom() {
        return this.destinationRoom;
    }

    /**
     * Returns the name of the object required to move along this passage,
     * or null if no object is required
     *
     * @return The name of the required object, or null if no object is required
     */
    public String getKeyName() {
        return this.keyName;
    }

    /**
     * Returns if the passage is blocked
     *
     * @return True if the passage is blocked, false otherwise.
     */
    public boolean getIsBlocked() {
        return this.isBlocked;
    }

    /**
     * Pretty print the Passage
     */
    public void printPassage() {
        System.out.println(this.direction + " " + this.destinationRoom + " " + this.keyName + " " + this.isBlocked);
    }
}