We will need several arrays in the game to help track the tiles. The first,
tilesAvailable
, will be used in the loading and building of the playfield. The second,
tilesInPlay
, will contain all of the tiles that have not yet been matched. The third,
tilesSelected
, will be used for the match detection methods. Since we are handling a relatively small number of tiles, using this multiple array structure will work fine for our purposes without any performance concerns. Let's add the code for the arrays now:
Filename: MTPlayfieldLayer.h
(already in variable declarations)
NSMutableArray *tilesAvailable; NSMutableArray *tilesInPlay; NSMutableArray *tilesSelected;
Filename: MTPlayfieldLayer.m
(initWithRows
, add after "Initialize the arrays")
tilesAvailable = [[NSMutableArray alloc] initWithCapacity:maxTiles]; tilesInPlay = [[NSMutableArray alloc] initWithCapacity:maxTiles]; tilesSelected = [[NSMutableArray alloc] initWithCapacity:2]; MTPlayfieldLayer.m: - (void) dealloc { // Release of the arrays [tilesAvailable release]; [tilesInPlay release]; [tilesSelected release]; [super dealloc]; }
Here we established the three
NSMutableArray
arrays in the header as variables, instantiated them in the initWithRows:andColumns:
method, and added them to a new dealloc
method. The
dealloc
method releases the three arrays. The
[super dealloc]
call is always required, and it should be the last line of the dealloc
method. This call to
super dealloc
tells the parent class of the current class to do whatever it needs to clean up. This is important to call because our current class doesn't have to worry about the details of any clean up that is done by the parent CCLayer
class.