Design

The aMaze MIDlet is a 3D game where the user guides the marble through the maze by tilting the phone until the time runs out.

The aMaze 3D game starts with a simple splash screen, and has a brief information about the game in the info screen. Tapping on the info icon, at bottom-left of the screen, during game menu launches the info screen.

Tapping on the screen, after the splash screen, starts the game. Tapping on the close icon, at bottom-right of the screen, during game menu closes the game.

Figure: aMaze game menus

The aMaze 3D game displays helpful tips, when game playback is idle, to inform the user about different game features. Tapping on the pause icon, at bottom-right of the screen, pauses the game and resuming from the pause menu recalibrates the accelerometer sensor.

Figure: aMaze game tips

The aMaze 3D game is played by tilting the phone to guide the marble through the maze. The screen can be zoomed with the help of pinching gesture, and the zoomed view can be toggled with the help of double tap gesture.

Figure: aMaze game views

Architecture

Figure: Amaze — Architecture

Note that some classes, methods and attributes are omitted.

Essential packages and classes described

The following table further explains the purpose of the classes in each package. Note that some of the less essential classes are omitted.

com.nokia.example.amaze

 

Main.java

The MIDlet main class.

SplashScreen.java

The splash screen implementation.

com.nokia.example.amaze.gestures

 

SafeGestureInteractiveZone.java

The rectangle where the gestures are recognised.

SafeGestureListener.java

The interface for gesture listeners.

SafeGestureRegistrationManager.java

The intelligent manager for registering gesture listeners.

com.nokia.example.amaze.model

 

MarbleModel.java

The model of the marble.

Maze.java

The model of the maze.

MyTimer.java

A generic, easy-to-use timer.

com.nokia.example.amaze.sensors

 

AccelerationProvider.java

The interface that provides accelerometer sensor readings.

AccelerationProviderImpl.java

The actual implementation of the accelerometer sensor readings provider.

com.nokia.example.amaze.ui

 

CameraAnimator.java

A utility class for camera animations.

DoubleTapDetector.java

Listens to touch events and notifies the listener if a double tap event is detected.

MazeCanvas.java

The game view that ties everything together.

Menu.java

A generic menu with support for customisable menu items.

WorldBuilder.java

Contains the methods for creating the game levels.

Implementation

For information about implementing the MIDlet, see Implementation.