diff options
Diffstat (limited to 'AmpelJonas/cPeasant.cpp')
-rw-r--r-- | AmpelJonas/cPeasant.cpp | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/AmpelJonas/cPeasant.cpp b/AmpelJonas/cPeasant.cpp new file mode 100644 index 0000000..280c16f --- /dev/null +++ b/AmpelJonas/cPeasant.cpp @@ -0,0 +1,51 @@ +#include "cPeasant.h" + +cPeasant::cPeasant(int _direction, int *_phase) +{ + pPhase = _phase; + iDirection = _direction; + pe = new cObject(1, 1); + pe->drawPoint(203, sPos{0,0}, true, _COL_YELLOW); + + switch (iDirection) + { + case _PE_DIR_NORTH: + pe->setPosition(_SIZE_X_ / 2 - 7, -1); + break; + case _PE_DIR_WEST: + pe->setPosition(-1, _SIZE_Y_ / 2 - 5); + break; + } +} + +cPeasant::~cPeasant() +{ + delete pe; +} + +cObject *cPeasant::getObject() +{ + return pe; +} + +void cPeasant::run() +{ + sPos oldPos = pe->getPosition(); + switch (iDirection) + { + case _PE_DIR_NORTH: + if(!(oldPos.y == _SIZE_Y_ / 2 - 5 && *pPhase != -1)) + pe->setPosition(oldPos.x, oldPos.y + 1); + + if(oldPos.y > _SIZE_Y_) + pe->setPosition(oldPos.x, -1); + break; + case _PE_DIR_WEST: + if (!(oldPos.x == _SIZE_X_ / 2 - 7 && *pPhase != 4)) + pe->setPosition(oldPos.x + 1, oldPos.y); + + if(oldPos.x > _SIZE_X_) + pe->setPosition(-1, oldPos.y); + break; + } +}
\ No newline at end of file |