Needs to be in Java or C++ without game engine
Game Loop with a specified frame rate
2D surface for game play
A refresh / update mechanism
Some type of sprite entity (class or struct preferred)
Collision-detection
Boundary management
Transformation - translation, rotation, and scaling