In this chapter, we have focused more on internal structure than we have on complex gameplay. By designing each object as fully contained as possible, it insulates the layer from the object. If we wanted to change the way the snake's movement is handled, for example, we could make those changes in the SNSnake
class without touching the SNPlayfieldLayer
at all. We have experimented with overriding the setPosition
method to control the serpentine nature of the snake's movement. We have implemented easy collision detection. We have also built our first game that includes several difficulty levels with increasingly more difficult playable levels. Finally, we have seen how adding a single variable can be all we really need to turn a CCSprite
into a mouse with a life of its own (and how to get rid of dead ones).
In the next chapter we will move on to a brick-breaking game using the Box2D
physics engine. We will use plists to store level data and even build some simple power-ups that will...