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
Diff: HighScoreEntry.cpp
- Revision:
- 15:d8ea0c7b7e64
- Parent:
- 14:46a353b2a8e8
- Child:
- 16:d0b142ba4362
--- a/HighScoreEntry.cpp Tue Jun 11 21:04:48 2013 +0000 +++ b/HighScoreEntry.cpp Sat Jun 15 15:05:19 2013 +0000 @@ -15,12 +15,48 @@ #include "CharFrame.h" // for drawing frames made of characters #include "CharCodes.h" // character codes +// Define this for debugging messages on serial port. +#define CHATTY + +#ifdef CHATTY + extern Serial pc; +#endif + +// Grid constants. +#define GRIDX 5 +#define GRIDY 14 +#define GRIDCOLUMNS 20 +#define GRIDROWS 3 +#define GRIDCOLUMNSPACING 2 +#define GRIDROWSPACING 2 + /***************/ /* CONSTRUCTOR */ /***************/ HighScoreEntry::HighScoreEntry() : - cursorPos( 0 ) + cursorPos( 0 ), + grid( GRIDROWS ) { + // Initialise grid around which cursor moves. + InitialiseGrid(); + #ifdef CHATTY + for( UInt8 rowNum = 0; rowNum < grid.GetRowCount(); ++rowNum ) { + FieldRow *row = grid.GetRow( rowNum ); + if( row != (FieldRow*)NULL ) { + FieldCell *cell = row->GetFirstCell(); + UInt8 columnNum = 0; + while( cell != (FieldCell*)NULL ) { + pc.printf( + "Row %d column %d -> %d,%d,%d,%d\r\n", + (int)rowNum, (int)columnNum, + (int)cell->Rect.X1, (int)cell->Rect.Y1, (int)cell->Rect.X2, (int)cell->Rect.Y2 + ); + cell = row->GetNextCell(); + columnNum++; + } + } + } + #endif } /**************/ @@ -29,6 +65,29 @@ HighScoreEntry::~HighScoreEntry() { } +/*******************/ +/* INITIALISE GRID */ +/*******************/ +void HighScoreEntry::InitialiseGrid( void ) { + UInt8 x, y = GRIDY; + for( UInt8 rowNumber = 0; rowNumber < GRIDROWS; ++rowNumber ) { + FieldRow *row = grid.GetRow( rowNumber ); + if( row != (FieldRow*)NULL ) { + x = GRIDX; + for( UInt8 columnNumber = 0; columnNumber < GRIDCOLUMNS; ++columnNumber ) { + FieldCell *cell = new FieldCell(); + cell->Rect.X1 = ( x - 1 ) << 3; + cell->Rect.Y1 = ( y - 1 ) << 3; + cell->Rect.X2 = ( ( x + 1 ) << 3 ) + 7; + cell->Rect.Y2 = ( ( y + 1 ) << 3 ) + 7; + row->AddCell( cell ); + x += GRIDCOLUMNSPACING; + } + } + y += GRIDROWSPACING; + } +} + /*********************/ /* GET A PLAYER NAME */ /*********************/ @@ -151,14 +210,6 @@ DrawGrid( gd ); } -// Grid constants. -#define GRIDX 5 -#define GRIDY 14 -#define GRIDCOLUMNS 20 -#define GRIDROWS 3 -#define GRIDCOLUMNSPACING 2 -#define GRIDROWSPACING 2 - /***************************/ /* DRAW THE CHARACTER GRID */ /***************************/