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