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:
Sun Jan 11 02:53:03 2015 +0000
Revision:
9:34008d8b1cdf
Final version before optimizations

Who changed what in which revision?

UserRevisionLine numberNew contents of line
taylorza 9:34008d8b1cdf 1 #ifndef __GAME_H__
taylorza 9:34008d8b1cdf 2 #define __GAME_H__
taylorza 9:34008d8b1cdf 3
taylorza 9:34008d8b1cdf 4 #define PLAY_EFFECT(channel, name) Game::playEffect(channel, EFFECT(name));
taylorza 9:34008d8b1cdf 5
taylorza 9:34008d8b1cdf 6 class Game
taylorza 9:34008d8b1cdf 7 {
taylorza 9:34008d8b1cdf 8 public:
taylorza 9:34008d8b1cdf 9 Game();
taylorza 9:34008d8b1cdf 10 void run();
taylorza 9:34008d8b1cdf 11 void die();
taylorza 9:34008d8b1cdf 12
taylorza 9:34008d8b1cdf 13 virtual void completeScreen() = 0;
taylorza 9:34008d8b1cdf 14
taylorza 9:34008d8b1cdf 15 inline void addScore(uint32_t score) { _score += score; }
taylorza 9:34008d8b1cdf 16 inline void subtractScore(uint32_t score) { _score -= score; }
taylorza 9:34008d8b1cdf 17 inline uint8_t getLives() { return _lives; }
taylorza 9:34008d8b1cdf 18 inline void addLives(uint8_t lives) { _lives += lives; }
taylorza 9:34008d8b1cdf 19 inline void increaseSpeed(uint16_t percent) { _speedAdjust += (32000 / 100 * percent); }
taylorza 9:34008d8b1cdf 20 inline void resetSpeed() { _speedAdjust = 0; }
taylorza 9:34008d8b1cdf 21 public:
taylorza 9:34008d8b1cdf 22 static Game *Instance;
taylorza 9:34008d8b1cdf 23 static LCD_ST7735 Surface;
taylorza 9:34008d8b1cdf 24
taylorza 9:34008d8b1cdf 25 static void playEffect(uint8_t channel, const SoundBlock *effect, uint8_t count);
taylorza 9:34008d8b1cdf 26
taylorza 9:34008d8b1cdf 27 protected:
taylorza 9:34008d8b1cdf 28 inline void setScene(Scene *pScene) { if (_pScene == NULL) _pScene = pScene; else _pNextScene = pScene; }
taylorza 9:34008d8b1cdf 29 inline Scene* getScene() { return _pScene; }
taylorza 9:34008d8b1cdf 30 inline void setLives(uint8_t lives) { _lives = lives; }
taylorza 9:34008d8b1cdf 31 inline void decLives() { --_lives; }
taylorza 9:34008d8b1cdf 32 inline void setScore(uint32_t score) { _score = score; }
taylorza 9:34008d8b1cdf 33 inline uint32_t getScore() { return _score; }
taylorza 9:34008d8b1cdf 34
taylorza 9:34008d8b1cdf 35 virtual void update();
taylorza 9:34008d8b1cdf 36 virtual void draw();
taylorza 9:34008d8b1cdf 37
taylorza 9:34008d8b1cdf 38 private:
taylorza 9:34008d8b1cdf 39 Scene *_pScene;
taylorza 9:34008d8b1cdf 40 Scene *_pNextScene;
taylorza 9:34008d8b1cdf 41 uint8_t _lives;
taylorza 9:34008d8b1cdf 42 uint32_t _score;
taylorza 9:34008d8b1cdf 43 uint16_t _speedAdjust;
taylorza 9:34008d8b1cdf 44
taylorza 9:34008d8b1cdf 45 friend class GameObject;
taylorza 9:34008d8b1cdf 46 friend class Scene;
taylorza 9:34008d8b1cdf 47 };
taylorza 9:34008d8b1cdf 48 #endif //__GAME_H__
taylorza 9:34008d8b1cdf 49
taylorza 9:34008d8b1cdf 50