Without diagrams, .capx or more concrete requirements we can only guess, for example, how you expect a grid to be like a circle.
Using arrays for grids is not mandatory, but is common given that a 2d array does logically map to a 2d grid.
So assuming arrays are the go, you can contain a lot of information in an array element to describe each grid space. The simplest would be a single value to denote what the grid space 'is'. For example a zero could be an empty space, which is one way to get your 'grid with hole' you mentioned.
You could also have a string/text in each element with each character meaning something. For example "0100450899" could mean 'a space with color w, texture x , height y and width z, or whatever.
Basically it's up to your code to interpret the array contents and draw the grid appropriately. If that's what you mean by 'manipulate the grid with variables'.
You could also have separate arrays to hold different information about the same grid. The possibilities are endless.