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:
Mon Feb 16 03:46:57 2015 +0000
Revision:
16:f9227904afc4
Parent:
14:b4884a31069e
Added a 4th game screen

Who changed what in which revision?

UserRevisionLine numberNew contents of line
taylorza 9:34008d8b1cdf 1 #ifndef __GAMEOBJECT_H__
taylorza 9:34008d8b1cdf 2 #define __GAMEOBJECT_H__
taylorza 9:34008d8b1cdf 3
taylorza 9:34008d8b1cdf 4 class Scene;
taylorza 9:34008d8b1cdf 5 class GameObject
taylorza 9:34008d8b1cdf 6 {
taylorza 9:34008d8b1cdf 7 public:
taylorza 9:34008d8b1cdf 8 GameObject();
taylorza 9:34008d8b1cdf 9
taylorza 9:34008d8b1cdf 10 public:
taylorza 14:b4884a31069e 11 void setStartPosition(uint8_t x, uint8_t y);
taylorza 9:34008d8b1cdf 12 void setSpriteId(uint8_t spriteId);
taylorza 9:34008d8b1cdf 13 void setSpeed(uint8_t speed);
taylorza 9:34008d8b1cdf 14 void setCollisionRect(uint8_t x, uint8_t y, uint8_t w, uint8_t h);
taylorza 9:34008d8b1cdf 15 void animate();
taylorza 9:34008d8b1cdf 16 virtual void update();
taylorza 9:34008d8b1cdf 17 virtual void draw();
taylorza 9:34008d8b1cdf 18
taylorza 9:34008d8b1cdf 19 protected:
taylorza 9:34008d8b1cdf 20 bool moveLeft();
taylorza 9:34008d8b1cdf 21 bool moveRight();
taylorza 9:34008d8b1cdf 22 bool moveUp();
taylorza 9:34008d8b1cdf 23 bool moveDown();
taylorza 9:34008d8b1cdf 24 bool fall();
taylorza 9:34008d8b1cdf 25
taylorza 9:34008d8b1cdf 26 const GameObject* detectCollision();
taylorza 9:34008d8b1cdf 27 const Block* detectBlock();
taylorza 9:34008d8b1cdf 28 Rect getCollisionRect();
taylorza 9:34008d8b1cdf 29
taylorza 9:34008d8b1cdf 30 bool pickupObject();
taylorza 9:34008d8b1cdf 31
taylorza 9:34008d8b1cdf 32 bool canGoLeft(uint8_t x, uint8_t y);
taylorza 9:34008d8b1cdf 33 bool canGoRight(uint8_t x, uint8_t y);
taylorza 9:34008d8b1cdf 34 bool canGoUp(uint8_t x, uint8_t y);
taylorza 9:34008d8b1cdf 35 bool canGoDown(uint8_t x, uint8_t y, uint8_t collitionBorder);
taylorza 9:34008d8b1cdf 36
taylorza 9:34008d8b1cdf 37 bool isOpenBelow();
taylorza 9:34008d8b1cdf 38 bool isOpenBelow(int8_t dx);
taylorza 9:34008d8b1cdf 39 bool isOverLadder();
taylorza 9:34008d8b1cdf 40 bool isLadderAbove();
taylorza 9:34008d8b1cdf 41 bool isLadderBelow();
taylorza 9:34008d8b1cdf 42 bool isLadderLeft();
taylorza 9:34008d8b1cdf 43 bool isLadderRight();
taylorza 9:34008d8b1cdf 44 const Block& getBlockAbove();
taylorza 9:34008d8b1cdf 45 const Block& getBlockBelow();
taylorza 9:34008d8b1cdf 46
taylorza 9:34008d8b1cdf 47 inline Point& getPosition() {return _position;}
taylorza 9:34008d8b1cdf 48 inline int8_t getLastXDirection() { return _lastdx; }
taylorza 9:34008d8b1cdf 49
taylorza 9:34008d8b1cdf 50 void setScene(Scene *pScene) { _pScene = pScene; }
taylorza 9:34008d8b1cdf 51 Scene* getScene() { return _pScene; }
taylorza 9:34008d8b1cdf 52 private:
taylorza 9:34008d8b1cdf 53 uint8_t _spriteId;
taylorza 9:34008d8b1cdf 54 Point _position;
taylorza 9:34008d8b1cdf 55 int8_t _dx;
taylorza 9:34008d8b1cdf 56 int8_t _dy;
taylorza 9:34008d8b1cdf 57 int8_t _lastdx;
taylorza 9:34008d8b1cdf 58 int8_t _lastdy;
taylorza 9:34008d8b1cdf 59 uint8_t _speed;
taylorza 9:34008d8b1cdf 60 uint8_t _animationCounter;
taylorza 9:34008d8b1cdf 61 Rect _collisionRect;
taylorza 9:34008d8b1cdf 62 bool _flipSprite;
taylorza 9:34008d8b1cdf 63
taylorza 9:34008d8b1cdf 64 Scene *_pScene;
taylorza 9:34008d8b1cdf 65
taylorza 9:34008d8b1cdf 66 friend class Scene;
taylorza 9:34008d8b1cdf 67 };
taylorza 9:34008d8b1cdf 68
taylorza 9:34008d8b1cdf 69 #endif //__GAMEOBJECT_H__