Platform game written for the GHI/OutrageousCircuits RETRO game device. Navigate the caves collecting all the pickups and avoiding the creatures and haunted mine carts that patrol the caves. Oh and remember to watch out for the poisonous plants... This game demonstrates the ability to have multiple animated sprites where the sprites can overlap the background environment. See how the player moves past the fence and climbs the wall in the 3rd screen.

Dependencies:   mbed

Committer:
taylorza
Date:
Sat Dec 27 23:24:30 2014 +0000
Revision:
3:a93fe5f207f5
Parent:
2:97d01ba6cd91
Child:
4:45ff7fc8a431
Working before fixed point audio

Who changed what in which revision?

UserRevisionLine numberNew contents of line
taylorza 1:ecf7bbccddc1 1 class PatrollingEnemy : public GameObject
taylorza 1:ecf7bbccddc1 2 {
taylorza 1:ecf7bbccddc1 3 public:
taylorza 1:ecf7bbccddc1 4 enum Direction { UpDown, LeftRight };
taylorza 1:ecf7bbccddc1 5
taylorza 1:ecf7bbccddc1 6 PatrollingEnemy(Game &game, uint8_t spriteId, Direction direction) :
taylorza 1:ecf7bbccddc1 7 GameObject(game),
taylorza 1:ecf7bbccddc1 8 _direction(direction),
taylorza 1:ecf7bbccddc1 9 _primaryDirection(true)
taylorza 1:ecf7bbccddc1 10 {
taylorza 2:97d01ba6cd91 11 setSpriteId(spriteId);
taylorza 3:a93fe5f207f5 12 setSpeed(1);
taylorza 1:ecf7bbccddc1 13 }
taylorza 1:ecf7bbccddc1 14
taylorza 1:ecf7bbccddc1 15 virtual void update()
taylorza 1:ecf7bbccddc1 16 {
taylorza 1:ecf7bbccddc1 17 if (_primaryDirection)
taylorza 1:ecf7bbccddc1 18 {
taylorza 1:ecf7bbccddc1 19 if (_direction == UpDown)
taylorza 1:ecf7bbccddc1 20 {
taylorza 1:ecf7bbccddc1 21 if (!moveUp()) _primaryDirection = false;
taylorza 1:ecf7bbccddc1 22 }
taylorza 1:ecf7bbccddc1 23 else if (_direction == LeftRight)
taylorza 1:ecf7bbccddc1 24 {
taylorza 1:ecf7bbccddc1 25 if (!moveLeft() || isOpenBelow(-4))
taylorza 1:ecf7bbccddc1 26 {
taylorza 1:ecf7bbccddc1 27 _primaryDirection = false;
taylorza 1:ecf7bbccddc1 28 }
taylorza 1:ecf7bbccddc1 29 }
taylorza 1:ecf7bbccddc1 30 }
taylorza 1:ecf7bbccddc1 31 else
taylorza 1:ecf7bbccddc1 32 {
taylorza 1:ecf7bbccddc1 33 if (_direction == UpDown)
taylorza 1:ecf7bbccddc1 34 {
taylorza 1:ecf7bbccddc1 35 if (!moveDown()) _primaryDirection = true;
taylorza 1:ecf7bbccddc1 36 }
taylorza 1:ecf7bbccddc1 37 else if (_direction == LeftRight)
taylorza 1:ecf7bbccddc1 38 {
taylorza 1:ecf7bbccddc1 39 if (!moveRight() || isOpenBelow(17))
taylorza 1:ecf7bbccddc1 40 {
taylorza 1:ecf7bbccddc1 41 _primaryDirection = true;
taylorza 1:ecf7bbccddc1 42 }
taylorza 1:ecf7bbccddc1 43 }
taylorza 1:ecf7bbccddc1 44 }
taylorza 1:ecf7bbccddc1 45 animate();
taylorza 1:ecf7bbccddc1 46 }
taylorza 1:ecf7bbccddc1 47
taylorza 1:ecf7bbccddc1 48 private:
taylorza 1:ecf7bbccddc1 49 Direction _direction;
taylorza 1:ecf7bbccddc1 50 bool _primaryDirection;
taylorza 2:97d01ba6cd91 51 };