#ifndef MAZE005_H
#define MAZE005_H

#include <gobj.h>
#include <mazedisp03.h>
#include <mazegameD2state01.h>
#include <mazegameD2solver01.h>
#include <menusystem.h>


/*!
\brief Simple maze D2 game. 
*/
class maze005
{
public:

  /** Brief description of each test. */
  static string doc[];

  /** Global graphics stream. */
  gobjContainer xGraphics;

  /** Maze game state. */
  static mazegameD2state01* mg;
  /** Maze solver. */
  static mazegameD2solver01* ms;
  /** Maze game display. */
  static mazedisp03* md;

  /** Toggle help menu. */
  static bool* help;
  /** Output window. */
  static menusystem* messages;

  /** Build the help menu. */
  void menubuild();

  /** Default keyboard handler - ESC to quit. */
  static void keyboard01(unsigned char key, int x, int y);
  /** Special character keyboard handler. */
  static void special01(int key, int x, int y);
  /** Displays the gobj::global with double buffering. */
  static void display01();
  /** Graphics dependent on window size needs to be updated. */
  static void reshape01(intc width_,intc height_);

  /** ./main prog=12 m=10 n=20 dx=0.15 backgroundcolor=0,255,0 wallcolor=0,25,255 randozize=0 id=1 origin=-1.4,-.5,0 - Display m by n maze. */
  maze005(int argc, char** argv);

  /** Enter infinite graphics display. */
  void eval();

};


#endif


