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 02:35:14 2015 +0000
Revision:
14:b4884a31069e
Parent:
9:34008d8b1cdf
Child:
16:f9227904afc4
Cleaned up some warnings and fixed memory issue related to incremental builds

Who changed what in which revision?

UserRevisionLine numberNew contents of line
taylorza 0:2ee0812e2615 1 #include "GameEngine.h"
taylorza 4:45ff7fc8a431 2 #include "SoundEffects.h"
taylorza 0:2ee0812e2615 3 #include "SpriteSheet.h"
taylorza 0:2ee0812e2615 4 #include "Player.h"
taylorza 1:ecf7bbccddc1 5 #include "PatrollingEnemy.h"
taylorza 2:97d01ba6cd91 6 #include "BouncingEnemy.h"
taylorza 4:45ff7fc8a431 7 #include "Assets.h"
taylorza 4:45ff7fc8a431 8 #include "Maps.h"
taylorza 4:45ff7fc8a431 9 #include "ScreenIntro.h"
taylorza 4:45ff7fc8a431 10 #include "Screen1.h"
taylorza 4:45ff7fc8a431 11 #include "Screen2.h"
taylorza 4:45ff7fc8a431 12 #include "Screen3.h"
taylorza 0:2ee0812e2615 13
taylorza 0:2ee0812e2615 14 class MyGame : public Game
taylorza 9:34008d8b1cdf 15 {
taylorza 4:45ff7fc8a431 16 public:
taylorza 4:45ff7fc8a431 17 MyGame() :
taylorza 4:45ff7fc8a431 18 _screen(-1),
taylorza 4:45ff7fc8a431 19 _intro(true)
taylorza 4:45ff7fc8a431 20 {
taylorza 4:45ff7fc8a431 21 setScene(new ScreenIntro);
taylorza 4:45ff7fc8a431 22 }
taylorza 4:45ff7fc8a431 23
taylorza 4:45ff7fc8a431 24 private:
taylorza 4:45ff7fc8a431 25 int _screen;
taylorza 3:a93fe5f207f5 26
taylorza 4:45ff7fc8a431 27 virtual void completeScreen()
taylorza 4:45ff7fc8a431 28 {
taylorza 4:45ff7fc8a431 29 _intro = false;
taylorza 8:ad5164d57f0d 30 if (_screen == 2)
taylorza 4:45ff7fc8a431 31 {
taylorza 4:45ff7fc8a431 32 increaseSpeed(10);
taylorza 4:45ff7fc8a431 33 addLives(1);
taylorza 4:45ff7fc8a431 34 }
taylorza 4:45ff7fc8a431 35
taylorza 4:45ff7fc8a431 36 _screen = (_screen + 1) % 3;
taylorza 4:45ff7fc8a431 37
taylorza 4:45ff7fc8a431 38 Scene *pCur = getScene();
taylorza 4:45ff7fc8a431 39 if (pCur != NULL) delete pCur;
taylorza 4:45ff7fc8a431 40
taylorza 4:45ff7fc8a431 41 switch(_screen)
taylorza 4:45ff7fc8a431 42 {
taylorza 4:45ff7fc8a431 43 case 0 : setScene(new Screen1); break;
taylorza 4:45ff7fc8a431 44 case 1 : setScene(new Screen2); break;
taylorza 4:45ff7fc8a431 45 case 2 : setScene(new Screen3); break;
taylorza 4:45ff7fc8a431 46 }
taylorza 4:45ff7fc8a431 47 };
taylorza 2:97d01ba6cd91 48
taylorza 4:45ff7fc8a431 49 virtual void update()
taylorza 4:45ff7fc8a431 50 {
taylorza 4:45ff7fc8a431 51 static bool died = false;
taylorza 4:45ff7fc8a431 52
taylorza 4:45ff7fc8a431 53 if (getLives() > 0)
taylorza 4:45ff7fc8a431 54 {
taylorza 4:45ff7fc8a431 55 Game::update();
taylorza 4:45ff7fc8a431 56 }
taylorza 4:45ff7fc8a431 57 else
taylorza 4:45ff7fc8a431 58 {
taylorza 4:45ff7fc8a431 59 if (died == false)
taylorza 4:45ff7fc8a431 60 {
taylorza 4:45ff7fc8a431 61 died = true;
taylorza 4:45ff7fc8a431 62 PLAY_EFFECT(2, Sound_GameOver);
taylorza 4:45ff7fc8a431 63 }
taylorza 4:45ff7fc8a431 64 }
taylorza 4:45ff7fc8a431 65 }
taylorza 4:45ff7fc8a431 66
taylorza 4:45ff7fc8a431 67 virtual void draw()
taylorza 4:45ff7fc8a431 68 {
taylorza 4:45ff7fc8a431 69 Game::draw();
taylorza 4:45ff7fc8a431 70
taylorza 4:45ff7fc8a431 71 if (!_intro)
taylorza 4:45ff7fc8a431 72 {
taylorza 4:45ff7fc8a431 73 if (getLives() == 0) Surface.drawBitmap(52, 60, bmpText, 0, 0, 56, 8, Color565::White, Color565::Black);
taylorza 4:45ff7fc8a431 74
taylorza 4:45ff7fc8a431 75 Surface.drawBitmap(0, 0, bmpText, 0, 16, 32, 8, Color565::White, Color565::Black);
taylorza 4:45ff7fc8a431 76 drawNumber(34, 0, getLives());
taylorza 4:45ff7fc8a431 77
taylorza 4:45ff7fc8a431 78 Surface.drawBitmap(72, 0, bmpText, 32, 16, 34, 8, Color565::White, Color565::Black);
taylorza 4:45ff7fc8a431 79 drawNumber(110, 0, getScore());
taylorza 4:45ff7fc8a431 80 }
taylorza 4:45ff7fc8a431 81 }
taylorza 4:45ff7fc8a431 82
taylorza 4:45ff7fc8a431 83 private:
taylorza 4:45ff7fc8a431 84 void drawNumber(int x, int y, int number)
taylorza 4:45ff7fc8a431 85 {
taylorza 4:45ff7fc8a431 86 sprintf(_textBuffer, "%d", number);
taylorza 4:45ff7fc8a431 87 for (char *p = _textBuffer; *p != 0; ++p, x += 8)
taylorza 4:45ff7fc8a431 88 {
taylorza 4:45ff7fc8a431 89 int sx = (*p - 48) * 8;
taylorza 4:45ff7fc8a431 90 Surface.drawBitmap(x, y, bmpText, sx, 8, 8, 8, Color565::White, Color565::Black);
taylorza 4:45ff7fc8a431 91 }
taylorza 4:45ff7fc8a431 92 }
taylorza 0:2ee0812e2615 93
taylorza 4:45ff7fc8a431 94 private:
taylorza 4:45ff7fc8a431 95 char _textBuffer[15];
taylorza 4:45ff7fc8a431 96 bool _intro;
taylorza 0:2ee0812e2615 97 };
taylorza 0:2ee0812e2615 98
taylorza 14:b4884a31069e 99
taylorza 3:a93fe5f207f5 100
taylorza 0:2ee0812e2615 101 int main()
taylorza 4:45ff7fc8a431 102 {
taylorza 14:b4884a31069e 103 MyGame game;
taylorza 3:a93fe5f207f5 104 game.run();
taylorza 0:2ee0812e2615 105 }
taylorza 3:a93fe5f207f5 106