msmazes::SphereFSMBuilder<> Class Template Reference
[Core FSM Layer]

#include <msmazes/core/fsm/builder/sphere.hpp>

List of all members.


Detailed Description

template<>
class msmazes::SphereFSMBuilder<>

An FSM Builder whose underlying pattern is a SpherePattern.

     typedef boost::mt19937
             RNGEngine;
     typedef msmazes::SphereFSMBuilder<>
             Builder;
     typedef Builder::Pattern
             Sphere;
     typedef sgdk::IndexTypeFSM<
                 boost::numeric::ublas::matrix<unsigned int>
               , unsigned int
             >
             FiniteStateMachine;
     RNGEngine          rng_engine;
     Builder            builder;
     FiniteStateMachine fsm;
     const Sphere&      sphere = builder.getPattern();
     builder.initialize(
         rng_engine
       , msmazes::StandardMazeMaker()
       , msmazes::FSMNoInputMaker()
       , msmazes::IcosahedronTesselationSelector()
       , Sphere::createCell(0.0, 0.0, 0.0)
       , 2.0
       , 4.0
       , 1.0
       , Sphere::createCell(8.0, 0.0, 0.0)
       , Sphere::createCell(0.0, 8.0, 0.0)
     );
     fsm.initialize(builder);
     while (!fsm.hasReachedTargetState())
     {
         unsigned int state = fsm.getCurrentState();
         renderCurrentMazeRoom(builder.getStateCell(state), sphere);  // User-defined
         int input = getInputFromUser();  // User-defined
         if ((-1 < input) && (input < sphere.getMaxOutDegree()))
         {
             fsm.processInput(input);
         }
     }
 

The code above will produce a traditional maze, but in the form of layered icosahedrons.

All programs using this class template must define BOOST_PARAMETER_MAX_ARITY as 13 or more.


Template parameters

Parameter Description Default
CoordinateType The value type of the coordinates in each cell. double
DirectionChangeType The type that will represent the change in course or bearing that occurs when traversing two consecutive edges in the underlying graph. int
CellContainerSelector The type that will represent whether the cell container is a std::vector (in which case this type is boost::vecS) or a std::deque (in which case this type is boost::dequeS). boost::vecS


Model of


Type requirements



Public Types

typedef implementation_defined StateIndex
typedef implementation_defined InputIndex
typedef implementation_defined MazeGraph
typedef implementation_defined Pattern
typedef implementation_defined Cell
typedef implementation_defined Direction
typedef implementation_defined ArgumentValidationPolicy

Public Member Functions

 SphereFSMBuilder ()
 The default constructor.
virtual ~SphereFSMBuilder ()
 The destructor.
template<typename RNGEngine, typename MazeMaker, typename FSMInputMaker, typename TesselationSelector, typename MazePolicy>
bool initialize (RNGEngine &rng_engine_arg, const MazeMaker &maze_maker_arg, const FSMInputMaker &fsm_input_maker_arg, const TesselationSelector &init_tesselation_selector_arg, const Cell &init_centroid_arg, const typename Pattern::Coordinate init_radial_increment_arg, const typename Pattern::Coordinate init_radius_maximum_arg, const typename Pattern::Coordinate init_radius_minimum_arg, const Cell &init_entrance_cell_arg, const Cell &init_exit_cell_arg, const MazePolicy &maze_policy_arg, const sgdk::PositiveRotation &init_positive_rotation_arg, const typename Pattern::Coordinate init_zero_tolerance_arg)
template<typename Params>
bool initialize_with_named_params (Params &p)
const PatterngetPattern () const
const MazeGraphgetMazeGraph () const
bool isReady () const
template<typename TransitionFunction>
void buildTransitionFunction (TransitionFunction &transition_function) const
StateIndex getSourceState () const
StateIndex getTargetState () const
bool hasSolutionFromState (const StateIndex source_state) const
InputIndex getCorrectInput (const StateIndex source_state) const
const CellgetStateCell (const StateIndex state) const
Direction getStateDirection (const StateIndex state) const


Member Typedef Documentation

typedef implementation_defined msmazes::SphereFSMBuilder<>::StateIndex
 

The type representing the index of a vertex in the underlying maze graph, as defined in the FSM Builder concept.

typedef implementation_defined msmazes::SphereFSMBuilder<>::InputIndex
 

The type representing the index of an edge in the underlying maze graph, as defined in the FSM Builder concept.

typedef implementation_defined msmazes::SphereFSMBuilder<>::MazeGraph
 

The type of the underlying maze graph, as defined in the FSM Builder concept.

typedef implementation_defined msmazes::SphereFSMBuilder<>::Pattern
 

The type of the underlying pattern, as defined in the FSM Builder concept.

typedef implementation_defined msmazes::SphereFSMBuilder<>::Cell
 

The type of the cells in the underlying pattern, as defined in the FSM Builder concept.

typedef implementation_defined msmazes::SphereFSMBuilder<>::Direction
 

The type representing the course or bearing that is followed when traversing an edge in the underlying pattern's internal graph, as defined in the FSM Builder concept.

typedef implementation_defined msmazes::SphereFSMBuilder<>::ArgumentValidationPolicy
 

The Argument Validation Policy in effect, as defined in the FSM Builder concept.


Constructor & Destructor Documentation

msmazes::SphereFSMBuilder<>::SphereFSMBuilder  )  [inline]
 

Constructs this SphereFSMBuilder, but does not initialize it.

virtual msmazes::SphereFSMBuilder<>::~SphereFSMBuilder  )  [inline, virtual]
 

Destroys this SphereFSMBuilder.


Member Function Documentation

template<typename RNGEngine, typename MazeMaker, typename FSMInputMaker, typename TesselationSelector, typename MazePolicy>
bool msmazes::SphereFSMBuilder<>::initialize RNGEngine &  rng_engine_arg,
const MazeMaker &  maze_maker_arg,
const FSMInputMaker &  fsm_input_maker_arg,
const TesselationSelector &  init_tesselation_selector_arg,
const Cell init_centroid_arg,
const typename Pattern::Coordinate  init_radial_increment_arg,
const typename Pattern::Coordinate  init_radius_maximum_arg,
const typename Pattern::Coordinate  init_radius_minimum_arg,
const Cell init_entrance_cell_arg,
const Cell init_exit_cell_arg,
const MazePolicy &  maze_policy_arg,
const sgdk::PositiveRotation &  init_positive_rotation_arg,
const typename Pattern::Coordinate  init_zero_tolerance_arg
 

Initializes this SphereFSMBuilder. Violation of the specified preconditions will result in either compile-time errors or failed assertions unless otherwise noted.

Parameter Name Description Preconditions Default
rng_engine_arg A number generator used to build a random maze graph and, if required, random inputs.
maze_maker_arg The maze graph builder.
fsm_input_maker_arg The input maker.
  • FSMInputMaker must model the FSM Input Maker concept.
  • If MazeMaker doesn't build last-visited maps, then FSMInputMaker must not require them.
init_tesselation_selector_arg Forms the underlying tesselation on top of which a maze will be built. See the corresponding parameter name under SpherePattern::initialize() for details and requirements.
init_centroid_arg A cell representing the centroid of the underlying SpherePattern.
init_radius_minimum_arg The distance from the centroid to the innermost layer of cells.
  • ( 0.0 < init_radius_minimum_arg )
init_radius_maximum_arg The distance from the centroid to the outermost layer of cells.
  • ( init_radius_minimum_arg <= init_radius_maximum_arg )
  • If FSMInputMaker is the same as FSMYawInputMaker, then init_radius_minimum_arg == init_radius_maximum_arg. (This function will return false otherwise.)
init_radial_increment_arg The distance between any two adjacent layers of cells.
  • ( 0.0 < init_radial_increment_arg )
init_entrance_cell_arg The entrance cell.
init_exit_cell_arg The exit cell.
maze_policy_arg A maze policy associated with MazeMaker. The default policy associated with MazeMaker.
init_positive_rotation_arg The rotational direction that a finite state machine that processes yaw inputs will recognize as upward from the finite state machine's current orientation. sgdk::PositiveRoration::CLOCKWISE
init_zero_tolerance_arg See the sgdk::ZeroChecker reference documentation. The default value is sufficient in most cases. 0.000001

Returns:
true if FSMInputMaker doesn't require a single layer, or if the distance from the centroid to the outermost layer of cells is the same as that from the centroid to the innermost layer of cells; false otherwise.

You can also pass the arguments by name. Use the parameter table above to look up the parameter names. Remember that each parameter name resides in the msmazes namespace.

template<typename Params>
bool msmazes::SphereFSMBuilder<>::initialize_with_named_params Params &  p  )  [inline]
 

Initializes this SphereFSMBuilder via the specified Argument Pack object. See the initialize() function documentation for acceptable parameters.

const Pattern& msmazes::SphereFSMBuilder<>::getPattern  )  const [inline]
 

Returns a const reference to the underlying pattern, as defined in the FSM Builder concept.

const MazeGraph& msmazes::SphereFSMBuilder<>::getMazeGraph  )  const [inline]
 

Returns a const reference to the underlying maze graph, as defined in the FSM Builder concept.

bool msmazes::SphereFSMBuilder<>::isReady  )  const [inline]
 

Returns the readiness of this FSMBuilder, as defined in the FSM Builder concept.

template<typename TransitionFunction>
void msmazes::SphereFSMBuilder<>::buildTransitionFunction TransitionFunction &  transition_function  )  const [inline]
 

Builds the specified transition function according to the structure of the underlying maze graph and its property maps, as defined in the FSM Builder concept.

StateIndex msmazes::SphereFSMBuilder<>::getSourceState  )  const [inline]
 

Returns the finite state machine's source state, as defined in the FSM Builder concept.

StateIndex msmazes::SphereFSMBuilder<>::getTargetState  )  const [inline]
 

Returns the finite state machine's target state, as defined in the FSM Builder concept.

bool msmazes::SphereFSMBuilder<>::hasSolutionFromState const StateIndex  source_state  )  const [inline]
 

Indicates whether or not it is possible for the finite state machine to reach the target state from the specified state, as defined in the FSM Builder concept.

InputIndex msmazes::SphereFSMBuilder<>::getCorrectInput const StateIndex  source_state  )  const [inline]
 

Returns the input that brings the finite state machine one step closer to its target state, as defined in the FSM Builder concept.

const Cell& msmazes::SphereFSMBuilder<>::getStateCell const StateIndex  state  )  const [inline]
 

Returns the cell that the maze graph's cell index map pairs the specified state with, as defined in the FSM Builder concept.

Direction msmazes::SphereFSMBuilder<>::getStateDirection const StateIndex  state  )  const [inline]
 

Returns the direction from the last-visited cell to the cell that the maze graph's cell index map pairs the specified state with, as defined in the FSM Builder concept.


Multi-State Mazes in C++ is hosted by SourceForge.net. Use the Table of Contents for navigation.