Short answer: global means module global.
Long answer: Actually your engine doesn't need to see the second room, as it is referenced in connects_to
Try replacing:
if command == 'move north':
if 'north' in room.list_of_directions and 'north' in room.connects_to:
player.Move(room.connects_to['north'] )
room = room.connects_to['north']
Same thing for south.
Or more generally:
if command.startswith ('move '):
direction = command [4:].strip ()
if direction in room.list_of_directions and direction in room.connects_to:
player.Move(room.connects_to[direction] )
room = room.connects_to[direction]
Or even:
if command.startswith ('move '):
direction = command [4:].strip ()
if direction in room.list_of_directions:
if direction in room.connects_to:
player.Move(room.connects_to[direction] )
room = room.connects_to[direction]
else:
print 'You fell off the world' #(valid direction but no room behind)
else:
print 'Thou shalst not move this way.'