vector<vector<SquareT>> board SquareT::Movememt() { switch (SquareType) { case TRAP DoTrapMovement() break; case ROAD DoRoadMovement() break ... }
vector<vector<void *>> board class TrapSquare{ }; class RoadSquare { }
class BaseMapSquareT { public: BaseMapSquareT(PlayerT & ); void EnterSquare(PlayerT &); void ExitSiquare(PlayerT &); void TraverseSquare(PlayerT &); private: int timesVisited{0}; };
class MarketSquareT : public BaseMaptSquareT { public: vector<StoreT>ListStores(); void EnterSquare(PlayertT &); private: vector<StoreT>stores; };
void PlayerAction(Squaret & square, PlayerT &