Очень интересный и одновременно сложный пример.
Реализовано большое количество классов. Класс Grid, классы Cell.