Drive or Die provides the user with a simple interface, containing a joystick for controlling Sphero movement, a health bar to show health remaining, a timer to show number of seconds survived, and a score that (is supposed to) go up based on amount of time survived and amount of health remaining. The more health, the more points; the more time survived, the more points. When out of health, the Sphero becomes unresponsive unless the user starts a new game from the score alert.
Not driving at full power causes the Sphero to lose 5 health of its 100 health per stagnant second. However, detected collisions (which seemingly become more likely the higher the power becomes) will decrease the Sphero’s health by 10 per reported collision. The Sphero’s health, aside from the health bar, is shown by the Sphero itself: above 75% and the Sphero is green; between 35% and 75% it becomes yellow; at 35% and under, the Sphero turns red. Collisions are reported with a blue flash alongside of the significant drop in the health bar.
The primary hurdles in getting the app to run included bringing all of the components to work together through threading and synchronizing, fine-tuning Sphero’s rather lackluster collision detection, and finding a way to stop the app from crashing on exit.
On resuming the app reconnects to the Sphero by itself, though not transparently. The app is partially set up so that some extension would allow resuming previous progress, but this would likely involve storing a thread(s), multiple variables, handling the SurfaceHandler, and a few other caveats so we weren’t able to effectively implement this (the app simply runs a new game if you exit and start it again).
Video (terrible quality): http://tinypic.com/r/v4ot35/6