Такие игры не пишутся в кадрах. Вы когда-нибудь слышали про ООП?)
Это - не код) Это - сценарий

Например:
Класс Cell(ячейка) содержит данные о том, свободна ли она, что на ней стоит, тип и свою позицию.
Класс Barricade(преграда) содержит данные о занимаемых ей ячейках, стоимости разрушения.
Класс Tree(дерево) наследуется от класса Barricade и перезаписывает данные о занимаемых ячейках, тип устанавливает в "дерево" и стоимость уничтожения, а также спрайты, которые отрисовывают дерево.
И т.д.
Это по части карты.
Далее, к примеру, транспорт.
Класс Vehicle(транспорт) содержит скорость, конечную цель, тип, длину, тип клеток, по которому он может двигаться и всё остальное.
Класс Train(поезд) устанавливает тип передвижения "рельсы(тоесть, только по ячейкам рельсы, которые предположительно вы создадите)", длину в любую желаемую, спрайты, отрисовывающие поезд и всю игровую механику.