Just to updat my knowledge I'm trying to create a boardgame in delphi. For those of you who know it, It's called carcassonne.

The starts out with a single square tile. Basically the player places a new tile adjecent to that tile and this process repeats itself until the game is out of tiles. I think you can understand the game field keeps on growing and I can never know how large the gamefield will become.

Here's an image to illustrate the gamefield:


The O-tiles show you where you're allowed to place the tile shown in the upper right corner.
The X-tiles show you where you can't place 'em.

I know of 2 ways to store the playfield:
1. I create a huge 2D array of TTile in which I store the tile info in a class.
2. I create a pointer to the starttile and the this tile has 4 pointers in it pointing north,east,south and west to an adjecent TTile object. This would create a web of intertwined TTile objects.
Problem with this is finding a specific tile and drawing it on a DrawGrid (Which I used for this).

But there must be a 3rd way of implementing this. I was thinking of some sort of TList, but in this case 2 dimensional. This list would expand as I put more tiles in it.

For drawing purposes it would be the easiest to just call TileList[x,y] to get a specific tile. Is there any way this can be done or should I just stick with option 1 or 2?

Opt 1. High memory storage, Quick tile search.
Opt 2. Low memory storage, Slow & complex tile search.