Ну это как parallelno придумает.
1) Простой вариант -- это выбрать окрестность персонажа округленную до знакоместа. 3х3 тайла будет буфер, где главный герой в центре. Остальных непоместившихся персонажей и всякие пули, мечи и стрелы перерисовывать аналогично по очереди. Картинку будет рвать, но не весь экран разом, а локально и каждый раз по разному, так что есть шанс, что почти всегда это будет незаметно. Особенно при том, что тут все крохотное 8х8. Так по-моему легко может случиться, что все перерисовывается по многу раз. Этому легко помочь, помечая в дополнительной битовой карте какие участки уже перерисованы.
2) Как вариант, можно сделать буфер не 3x3 тайла, а шириной в экранную строку.
3) Еще идея -- если хорошо отладить клиппинг всех спрайтов (а это не так уж и сложно), можно сделать процедуру отрисовки одного тайла с наложением всех предметов и персонажей. Тогда тайлы можно перерисовывать в любом порядке, хоть в псевдослучайном. Тогда основная логика будет только помечать тайлы, требующие обновления, а рисовальный цикл будет обходить карту их обновлять. Сначала мне показалось, что это запарно, потому что клиппинг и все такое, но на самом деле это по сути упрощение варианта (1).





Ответить с цитированием