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

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 */
 /***************************/