//******************************************************************* // // Project: MacroSoft // // Class: CompassDirection // // Author: CS 1711, Section B // // Description: A direction object // // Date: 1999 Fall // // Filename: compdir.h // //******************************************************************* #ifndef COMPASS_DIR //preprocessor directive #define COMPASS_DIR const int NUMDIRECTIONS = 4; class CompassDirection{ private: enum Directions {North, East, South, West}; // the diections Directions direction; public: // constructors CompassDirection(); CompassDirection(char newDirection); //access function prototypes char getDirection(); // set function prototypes void setDirection(char newDirection); // turning methods void rightTurn(); void leftTurn(); void reverse(); // output method void writeDirection(); }; // *********************************************************** // CompassDirection class implementation // *********************************************************** // implementation of the CompassDirection constructor // default constructor CompassDirection::CompassDirection() { direction = North; } // with a parameter CompassDirection::CompassDirection(char newDirection) { switch (newDirection) { case 'n': case 'N' : direction = North; break; default: cerr << "Invalid direction, object not initialized!!"; } // FILL IN!! } //access function ??? does it make sense? char CompassDirection::getDirection() { return '0'; } // set function void CompassDirection::setDirection(char newDirection) { } // turning methods void CompassDirection::rightTurn() { direction = Directions((direction + 1)%NUMDIRECTIONS); } void CompassDirection::leftTurn() { direction = Directions((direction + 3)%NUMDIRECTIONS); } void CompassDirection::reverse() { } // output method void writeDirection() { } #endif