Version of Robotron arcade game using LPC1768, a Gameduino shield, a serial EEPROM (for high scores), two microswitch joysticks and two buttons plus a box to put it in. 20 levels of mayhem.

Dependencies:   25LCxxx_SPI CommonTypes Gameduino mbed

Committer:
RichardE
Date:
Sat Jun 08 16:44:54 2013 +0000
Revision:
7:e72691603fd3
Parent:
4:673eb9735d44
Child:
8:82d88f9381f3
Now have grunts wandering around on level 1. They follow the player but since no collision detection logic yet nobody ever gets killed.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
RichardE 0:5fa232ee5fdf 1 /*
RichardE 0:5fa232ee5fdf 2 * SOURCE FILE : Level.h
RichardE 0:5fa232ee5fdf 3 *
RichardE 0:5fa232ee5fdf 4 * Definition of class Level.
RichardE 0:5fa232ee5fdf 5 * Base class for all levels.
RichardE 0:5fa232ee5fdf 6 *
RichardE 0:5fa232ee5fdf 7 */
RichardE 0:5fa232ee5fdf 8
RichardE 0:5fa232ee5fdf 9 #ifndef LevelDefined
RichardE 0:5fa232ee5fdf 10
RichardE 0:5fa232ee5fdf 11 #define LevelDefined
RichardE 0:5fa232ee5fdf 12
RichardE 0:5fa232ee5fdf 13 #include "Types.h"
RichardE 0:5fa232ee5fdf 14 #include "Gameduino.h" // Gameduino library
RichardE 1:dfd5eaaf96a3 15 #include "GDExtra.h" // a few more Gameduino related functions
RichardE 1:dfd5eaaf96a3 16 #include "GDConst.h" // a few more Gameduino constants
RichardE 1:dfd5eaaf96a3 17 #include "CharCodes.h" // character codes
RichardE 1:dfd5eaaf96a3 18 #include "CharBlocks.h"
RichardE 1:dfd5eaaf96a3 19 #include "StringData.h"
RichardE 0:5fa232ee5fdf 20 #include "HighScoreTable.h"
RichardE 2:bb0f631a6068 21 #include "CharFrame.h"
RichardE 4:673eb9735d44 22 #include "PanelControls.h"
RichardE 4:673eb9735d44 23 #include "PlayerObject.h"
RichardE 0:5fa232ee5fdf 24 #include "ArenaConst.h"
RichardE 0:5fa232ee5fdf 25 #include "SpriteImageId.h"
RichardE 0:5fa232ee5fdf 26 #include "GameObject.h"
RichardE 7:e72691603fd3 27 #include "HumanObject.h"
RichardE 0:5fa232ee5fdf 28 #include "GruntObject.h"
RichardE 0:5fa232ee5fdf 29 #include "CrusherObject.h"
RichardE 1:dfd5eaaf96a3 30 #include "BrainObject.h"
RichardE 7:e72691603fd3 31 #if 0
RichardE 7:e72691603fd3 32 #include "BlueMeanyObject.h"
RichardE 0:5fa232ee5fdf 33 #include "SoundManager.h"
RichardE 0:5fa232ee5fdf 34 #include "Sounds.h"
RichardE 0:5fa232ee5fdf 35 #endif
RichardE 0:5fa232ee5fdf 36
RichardE 0:5fa232ee5fdf 37 class Level {
RichardE 0:5fa232ee5fdf 38
RichardE 0:5fa232ee5fdf 39 public :
RichardE 0:5fa232ee5fdf 40
RichardE 0:5fa232ee5fdf 41 // Number of this level.
RichardE 0:5fa232ee5fdf 42 UInt8 LevelNumber;
RichardE 0:5fa232ee5fdf 43
RichardE 0:5fa232ee5fdf 44 /***************/
RichardE 0:5fa232ee5fdf 45 /* CONSTRUCTOR */
RichardE 0:5fa232ee5fdf 46 /***************/
RichardE 0:5fa232ee5fdf 47 Level();
RichardE 0:5fa232ee5fdf 48
RichardE 0:5fa232ee5fdf 49 /**************/
RichardE 0:5fa232ee5fdf 50 /* DESTRUCTOR */
RichardE 0:5fa232ee5fdf 51 /**************/
RichardE 0:5fa232ee5fdf 52 virtual ~Level();
RichardE 0:5fa232ee5fdf 53
RichardE 0:5fa232ee5fdf 54 /************************/
RichardE 0:5fa232ee5fdf 55 /* SET HIGH SCORE TABLE */
RichardE 0:5fa232ee5fdf 56 /************************/
RichardE 0:5fa232ee5fdf 57 // Pass pointer to EEPROM in e.
RichardE 0:5fa232ee5fdf 58 void SetHighScores( HighScoreTable *hst ) {
RichardE 0:5fa232ee5fdf 59 highScores = hst;
RichardE 0:5fa232ee5fdf 60 }
RichardE 1:dfd5eaaf96a3 61
RichardE 1:dfd5eaaf96a3 62 /*************************************************/
RichardE 1:dfd5eaaf96a3 63 /* SET GAMEDUINO ON WHICH GRAPHICS WILL BE DRAWN */
RichardE 1:dfd5eaaf96a3 64 /*************************************************/
RichardE 1:dfd5eaaf96a3 65 // Pass pointer to a Gameduino.
RichardE 1:dfd5eaaf96a3 66 void SetGameduino( Gameduino *g ) {
RichardE 1:dfd5eaaf96a3 67 gd = g;
RichardE 1:dfd5eaaf96a3 68 }
RichardE 1:dfd5eaaf96a3 69
RichardE 0:5fa232ee5fdf 70 /***************************************/
RichardE 0:5fa232ee5fdf 71 /* SET PLAYER WHO IS PLAYING THE LEVEL */
RichardE 0:5fa232ee5fdf 72 /***************************************/
RichardE 0:5fa232ee5fdf 73 // Pass pointer to player in p.
RichardE 0:5fa232ee5fdf 74 void SetPlayer( PlayerObject *p ) {
RichardE 0:5fa232ee5fdf 75 player = p;
RichardE 0:5fa232ee5fdf 76 }
RichardE 0:5fa232ee5fdf 77
RichardE 0:5fa232ee5fdf 78 // Enumeration of reasons why level ended.
RichardE 0:5fa232ee5fdf 79 enum LevelExitCode {
RichardE 0:5fa232ee5fdf 80 Completed, // level was completed
RichardE 0:5fa232ee5fdf 81 GameOver, // player has no more lives
RichardE 0:5fa232ee5fdf 82 };
RichardE 0:5fa232ee5fdf 83
RichardE 0:5fa232ee5fdf 84 /**************/
RichardE 0:5fa232ee5fdf 85 /* PLAY LEVEL */
RichardE 0:5fa232ee5fdf 86 /**************/
RichardE 0:5fa232ee5fdf 87 // Returns code indicating how level ended.
RichardE 0:5fa232ee5fdf 88 virtual LevelExitCode Play( void ) = 0;
RichardE 0:5fa232ee5fdf 89
RichardE 0:5fa232ee5fdf 90 protected :
RichardE 0:5fa232ee5fdf 91
RichardE 1:dfd5eaaf96a3 92 // Pointer to high score table.
RichardE 1:dfd5eaaf96a3 93 HighScoreTable *highScores;
RichardE 0:5fa232ee5fdf 94
RichardE 1:dfd5eaaf96a3 95 // Gameduino on which level is played.
RichardE 1:dfd5eaaf96a3 96 Gameduino *gd;
RichardE 1:dfd5eaaf96a3 97
RichardE 0:5fa232ee5fdf 98 // Player playing the level.
RichardE 4:673eb9735d44 99 PlayerObject *player;
RichardE 0:5fa232ee5fdf 100
RichardE 0:5fa232ee5fdf 101 /*************/
RichardE 0:5fa232ee5fdf 102 /* PLAY LOOP */
RichardE 0:5fa232ee5fdf 103 /*************/
RichardE 0:5fa232ee5fdf 104 // Returns code indicating how level ended.
RichardE 0:5fa232ee5fdf 105 // This method should be called from the Play method after the
RichardE 0:5fa232ee5fdf 106 // level data has been initialised and the return value returned
RichardE 0:5fa232ee5fdf 107 // by the Play method.
RichardE 0:5fa232ee5fdf 108 virtual LevelExitCode PlayLoop( void ) = 0;
RichardE 0:5fa232ee5fdf 109
RichardE 0:5fa232ee5fdf 110 };
RichardE 0:5fa232ee5fdf 111
RichardE 0:5fa232ee5fdf 112 #endif
RichardE 0:5fa232ee5fdf 113
RichardE 0:5fa232ee5fdf 114 /* END of Level.h */
RichardE 0:5fa232ee5fdf 115