Можно глянуть как сам автор
сделал, код довольно понятный, да и комментарии присутствуют.
Конкретно по вопросу: создать объект игрового поля (сетки), описать события для управления в игре, сделать игровые состояния (победа, проигрыш, в процессе). Потом можно уже колдовать над функцией добавления новой ячейки в поле, которая размещается в любую свободную клетку (например, на подходах к 2048 увеличить вероятность появления новой ячейки к самым крупным и т.п.).