Предыдущие части: Трусливый код и Event Loop, Первый результат, Лыко-мочало, Время жизни, Графическая прокладка, Дженерики, Композиция, Модули, Начальное проектирование, Итоги про память, Что там с памятью, Колхозим интерфейсы, Где у него классы, Поддержка SDL2, Полируем ржавчину Чтобы не было скучно, сразу покажу результат, который получился: Это демонстрация того, как на сцену добавлены два графических объекта: RLE-спрайт и текст. Реализация базируется на предыдущих материалах: Что я планировал изначально: У каждого объекта типа GameObject есть свой атрибут renderer, который хранит собственно рендерер, который умеет отображать данный объект. Чтобы в GameObject можно было поместить разные рендереры, нужно оформить их через трейт. Всего есть три разных рендерера: рисующий прямоугольники RendererRect, рисующий спрайты RendererSprite и рисующий текст RendererText. (Код пишу чисто для примера, даже не проверяю) Все три рендерера имеют трейт Renderer, в котором определен один метод render(