Ice Cream Dash

GUI: Java & Swing GUI | Mobile: Native Android, XML, Java


Ice Cream Dash is a Java-based game where you are tasked with filling an ice cream cone with specific toppings. The menu display informs the player which toppings are needed to be stacked on the cone to complete the order. With each incorrect topping that is stacked, the player loses a life. If the player loses all 3 possible lives, the game is over. If they manage to stack all the necessary toppings within their 3 lives, they win the game!


Ice Cream Dash utilizes hitboxes whose sizes are calculated from the topping's size and the y-position of the cone. Since each topping has a different size, there is one specific hitbox for each topping. Toppings are painted continuously using a falling function, which is modulated using collision detection.


For future developments, Ice Cream Dash can use a varying speed factor for the falling toppings. This can be introduced as the player progresses through the game which would increase the difficulty. Also, an addition of a database for high scores can provide a means for not only competing with personal best scores, but also with other players. This will encourage players to continue their efforts to beat their fellow Ice Cream Dash players!


By use of Android Studio and XML formatting, I converted the Swing UI into a fully functional native Android application. Several elements of the game had to be altered, including the touch events and, of course, the UI painting.

Given the complexity of the bitmap interactions, I decided to use graphics.Canvas to paint the entirety of the game onto a SurfaceView. Instead of the use of the arrow keys to control the keyboard, the cone is controlled by touching either the left or right side of the screen.

For future developments, I believe it would be an improvement to use a GestureListener to move the cone, which would be able to detect left or right swipe directions. However, this might make the game either too easy (since the cone wouldn't take as long to reach your desired destination), or too difficult (maybe the rapid movements of the cone and fingers would interfere with having a grasp with where the toppings are). Either way, it was a challenge attempting to wrangle GestureListener, so I decided to omit it for now.

Another layer of complexity that can make the game interesting would be to include a stacking-order requirement. With this, the player would lose a life with each incorrectly placed topping. It's the cherry on top (literally, lol)!