/*
 * Go for all keys in sane direction until we hit a door that
 * we can't pass then change direction.
 *
 * BFS from current location to next key.
 */

public class Explorer
{
    public static final int MAXIMUM_KEYS = 26;

    public Explorer (Node start, boolean debug)
    {
        _start = start;
        _keys = new char[MAXIMUM_KEYS];
        _keysFound = 0;
        _debug = debug;
    }

    @Override
    public String toString ()
    {
        if (_keysFound > 0)
        {
            String str = "Keys found: ";

            for (int i = 0; i < _keysFound; i++)
            {
                str += ", "+_keys[i];
            }

            return str;
        }
        else
            return "No keys found.";
    }

    private void backtrack ()
    {
        /*
         * Decrement the number of steps as we go
         * back on our path.
         */
    }

    /*
     * Could encode the key set as a bitmask to make comparisons fast.
     * However, it's not critical at this stage.
     */

    private Node _start;
    private char[] _keys;
    private int _keysFound;
    private boolean _debug;
}
@@ -187,76 +187,28 @@
 lic 
-static final int MAXIMUM_KEYS = 26;%0A%0A    public Explorer (Node start
+Explorer (Map theMap
 , bo
@@ -239,21 +239,23 @@
    _
-start = start
+theMap = theMap
 ;%0A  
@@ -281,20 +281,30 @@
 har%5B
-MAXIMUM_KEYS
+_theMap.numberOfKeys()
 %5D;%0A 
@@ -991,19 +991,19 @@
 ate 
-Node _start
+Map _theMap
 ;%0A  

Update Explorer.java