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:
4:673eb9735d44
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/GameObjectLocator.cpp	Sat Jun 08 11:24:05 2013 +0000
@@ -0,0 +1,71 @@
+/*
+ * SOURCE FILE : GameObjectLocator.cpp
+ *
+ * Code for randomly positioning objects.
+ *
+ */
+
+#include "GameObjectLocator.h"
+#include "ArenaConst.h"
+#include "Random.h"
+
+// Indicates which quadrant to put next object in.
+UInt8 GameObjectLocator::quad = 0;
+
+/*************************************/
+/* POSITION OBJECT RANDOMLY IN ARENA */
+/*************************************/
+// Pass object to locate in obj.
+void GameObjectLocator::Locate( GameObject *obj ) {
+  Int16 x, y;
+  
+  // Calculate start pixel coordinates for player.
+  Int16 ppx = GameObject::ToPixel( PLAYER_START_X );
+  Int16 ppy = GameObject::ToPixel( PLAYER_START_Y );
+  
+  // Keep calculating random coordinates until coordinates chosen
+  // are some distance away from chase object.
+  do {
+    
+    x = Random::Get( ( ARENA_WIDTH >> 1 ) - SPRITE_PIXEL_WIDTH - 4 );
+    y = Random::Get( ( ARENA_HEIGHT >> 1 ) - SPRITE_PIXEL_HEIGHT - 4 );
+    
+    switch( quad ) {
+      
+    case 0 :
+      x += ARENA_MIN_X;
+      y += ARENA_MIN_Y;
+      break;
+      
+    case 1 :
+      x = ARENA_MIN_X + ARENA_WIDTH - SPRITE_PIXEL_WIDTH - x;
+      y += ARENA_MIN_Y;
+      break;
+      
+    case 2 :
+      x += ARENA_MIN_X;
+      y = ARENA_MIN_Y + ARENA_HEIGHT - SPRITE_PIXEL_HEIGHT - y;
+      break;
+      
+    case 3 :
+      x = ARENA_MIN_X + ARENA_WIDTH - SPRITE_PIXEL_WIDTH - x;
+      y = ARENA_MIN_Y + ARENA_HEIGHT - SPRITE_PIXEL_HEIGHT - y;
+      break;
+
+    }
+    
+  } while(
+    ( abs( x - ppx ) < ( SPRITE_PIXEL_WIDTH << 1 ) ) &&
+    ( abs( y - ppy ) < ( SPRITE_PIXEL_HEIGHT << 1 ) )
+  );
+  
+  obj->Xco = GameObject::FromPixel( x );
+  obj->Yco = GameObject::FromPixel( y );
+
+  // Use next quadrant on next call.
+  quad++;
+  quad &= 3;
+  
+}
+
+