Немного фона:
Я узнаю об агентно-ориентированном моделировании и только что реализовал «Игру жизни» Конвея с помощью пакета Mesa. Я читал о начальных конфигурациях для этой модели, которые производят интересные явления, и хочу воссоздать их (то есть, планерная пушка Gosper, R-pentomino и т. Д.)
Я подумал, что интересным учебным проектом будет создание приложения с графическим интерфейсом, которое отображает сетку и позволяет пользователю выбирать ячейки, с которыми он хочет создать экземпляр модели.
Проблема:
Я хочу отобразить графический интерфейс, содержащий сетку, как показано ниже:

И затем пользователь может щелкнуть ячейки, которые он хочет заполнить, и он будет отображаться следующим образом: 
Затем, когда пользователь нажимает кнопку «Сохранить состояние» (или нажимает указанную клавишу завершения), его выборки сохраняются в массиве для создания экземпляра модели.
Я не уверен, с чего начать. Если кто-нибудь может указать мне правильное направление, я был бы очень признателен.