
/** 
 Program:    SpyGame Class for application
 Purpose:    demonstrates features of Safe class;
 @author     john@december.com
 @version    1.07; 23 July 1995
 */

class SpyGame {

   public static void main (String args[]) {

      System.out.println("SpyGame application...");

      Safe theSafe = new Safe();

      System.out.println("Which safe is this? " + theSafe.doorNumber);
     
      System.out.println("Is the safe locked? " + theSafe.isLocked());

      /* Try to unlock the safe with a guessed combination of 999: */
      theSafe.unLock(999);  

      System.out.println("Is 999 the combination? " + theSafe.isLocked());

      /* This wont' work:  theSafe.unLock();
         Gives compiler error: "Method void unLock() in class 
         Safe is not accessible from class SpyGame."  */

      /* How about stealing the combination?
         Reference to this won't work:  theSafe.combination;
         Gives compiler error: "Variable combination in class Safe not 
         accessible from class SpyGame."  */
      
      /* How about resetting the safe's lock to a known combination?
         This won't work:  theSafe.setCombination(999);
         Gives compiler error: "Method void setCombination(int) in class 
         Safe is not accessible from class SpyGame." */ 

      /* How about defacing the door's number? */
      System.out.println("Changing the door number ...");
      theSafe.doorNumber = 555;
      System.out.println("Now the door is number: " + theSafe.doorNumber);
      theSafe.unLock(theSafe.doorNumber);  
      System.out.println("Is the safe locked? " + theSafe.isLocked());

      System.out.println("However, you can crack your own safe ...");

      Safe mySafe = new Safe(999);

      System.out.println("Is my safe locked? " + mySafe.isLocked());
      System.out.println("My safe has door number " + mySafe.doorNumber);

      System.out.println("Unlocking safe with combination as doorNumber...");
      mySafe.unLock(mySafe.doorNumber);  

      System.out.println("Is my safe locked now? " + mySafe.isLocked());

   }
}
