I want to develop this game for the iPhone. Which framework would be best to use (e.g., Cocoa, Cocoa2d, OPENGLES)?
I would go with OpenGLEs. It would allow you to have 3d and do some cool stuff later on if you wanted.
I would look at
http://code.google.com/p/cocos2d-iphone/
You get a whole engine to help with your app and getting some pretty tricky stuff working.
Cocos2d does the following.
- Scene management (workflow)
- Transitions between scenes Sprites
- and Sprite Sheets Effects: Lens,
- Ripple, Waves, Liquid, Twirl, etc.
- Actions (behaviors): Trasformation
- Actions: Move, Rotate, Scale, Jump,
- etc. Composable actions: Sequence,
- Spawn, Repeat, Reverse Ease Actions:
- Exp, Sin, Cubic, etc. Misc actions:
- CallFunc, OrbitCamera Basic menus and
- buttons Integrated Chipmunk 2d
- physics engine Particle system Text
- rendering support Texture Atlas
- support Tile Map support Parallax
- scrolling support High Score server
- (Cocos Live) Touch/Accelerometer
- support Portrait and Landscape mode
- Integrated Pause/Resume Supports
- PowerVR Texture Compression (PVRTC)
- format Language: objective-c Open
- Source: Compatible with open and
- closed source projects OpenGL ES 1.1 based
Cocoa2D is using OpenGL ES, and given the game you are looking to do is a simple sprite based game, I think this would be a fine tool kit to use.
On the other hand, for performance you might find that Quartz 2D is significantly faster and provides you for free useful things such as key frame animation. The reason you'll find it's faster is that OpenGL needs to handle at all times the possibility of 3D rendering and all the various possible interactions your polygons could have with the image space: projections, zordering along vertices, etc. Quartz 2D however is fixed in 2D space so provides a good 2D space management tool kit. Additionally all the additional overhead OpenGL can encompass is stripped out.
I've done both, and I've found Quartz 2D to be a simple and fast toolkit to learn and definitely easy to program in. In the future when I do simple 2D sprite based apps I myself will be using Quartz 2D.