CSC112 Spring 2016 Examples
// Implementation of the CrossFour Puzzle1#ifndef CROSSFOUR_H2#define CROSSFOUR_H34#include "widget.h"5#include "peg.h"6#include "backtrack.h"7#include <vector>89class CrossFour : public Widget10{11public:1213//reset the puzzle to starting position14virtual void reset();1516//constructors and destructors17CrossFour();18CrossFour(int x, int y);19~CrossFour();2021//display our puzzle22virtual void display();2324//cursor movements25virtual void left();26virtual void right();2728//perform a move29virtual bool move();3031//autosolve32virtual void solve();3334private:35std::vector<Peg*> pegs;36int cx; //peg the cursor is on37int sx; //selected peg for the move (-1 if no selection)3839void displayState(char state[]);4041class Solver : public MoveState42{43public:44Solver(CrossFour *puzzle);45Solver(CrossFour *puzzle, char state[], int movedPeg); // moved peg is the peg we are moving4647virtual bool reject();48virtual bool accept();49virtual MoveState* next();5051//move "memory"52virtual MoveState* before();53virtual MoveState* after();545556char state[9];57int movedPeg;58int nextTrial;59Solver *_before;60Solver *_after;61CrossFour *puzzle;62};63};6465#endif6667