Ice Cream Dash

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

objectives

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!

development

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. With further developments, Ice Cream Dash can include

future

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 in order to increase the difficulty. Ice Cream Dash can also add a layer of competitiveness. An addition of a database 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!

mobile

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!