Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

С++. Перерисовка и движение объектов в двумерном массиве

InviZzzible Мудрец (10825), закрыт 6 лет назад
В общем даже не знаю как описать суть вопроса... Есть поле (двумерный массив) 30 на 50 которое заполнено не пустыми символами (если заполнять пустыми то соответственно все будет казаться достаточно быстрым). Но исходя от противного поле заполнено символами. Фишка в том, что перерисовка всего поля визуально недостаточно быстрая и как вывод - раздражающий мерцающий экран.... хотя это всего навсего тетрис...
Видимо я не правильно делаю что стираю все и перепечатываю все поновой? грамотнее было бы вернуться и подчистить эти самые данные. тогда мы будем наблюдать лишь движение объектов?
Дополнен 6 лет назад
Лучший ответ
Ярослав Искусственный Интеллект (107841) 6 лет назад
Да, мерцать не будет если устанавливать каретку и выводить символы "поверх".

Но с установкой каретки связаны какие-то сложности (давно было, не помню какие именно), поэтому вместо консольного вывода лучше сразу задействовать графику. Все поле можно представить двумерным массивом, как и любую фигуру, то есть остается только рисовать все равносторонними прямоугольниками (типа "по клеточкам") вместо печати символов - скорее всего, уже имеющийся код будет легко адаптировать под такой вывод. В основном потребуется только написать функцию пересчета координат в пиксельные, и заменить функцию "отрисовки".

Конкретно по коду (что подключать, что вызывать) не подскажу, к сожалению... делал такое только на лабах по плюсам, много лет назад.

p.s.: Конечно, при графическом выводе тоже надо будет "очищать" перерисовывкой только отдельные области, чтобы не было мерцания. Просто с самим выводом будет попроще, да и больше подходит под задачу...
InviZzzibleМудрец (10825) 6 лет назад
Я так и подумал. Надо пересмотреть идеологию движений тел в целом...
Ярослав Искусственный Интеллект (107841) С псевдографикой вообще геморрой... и она сама по себе тормозная. Кстати, в старых файловых менеджерах типа Norton Commander, задачу отрисовки "диалоговых окон" решали очень изящно: рисовали от центра, столбцами слева и справа одновременно... типа анимация разворачивания :) и волн перерисовки не видно, и "спецэффекты"
Остальные ответы
Степан Рогав Мастер (1633) 6 лет назад
хватит остановись как я тебя потом догонять буду!!!! если буду конечно скорее даже если буду никогда уже не догоню.
InviZzzibleМудрец (10825) 6 лет назад
ахахха да я на месте стою))) ничего нового не изучаю))) А вообще мне полиморфизм никак не дается (((
Антон ФАГ Мудрец (11303) 6 лет назад
Я тут почитал Ярослава - пишет бред! Выводить в консоль можно достаточно быстро и без всяких мерцаний, делается с помощью двойного буфера + WriteConsoleOutputA! Если надо могу простой Xonix
скинуть как пример.
InviZzzibleМудрец (10825) 6 лет назад
кидайте. посмотрю Ваше решение.
Антон ФАГ Мудрец (11303) https://cloud.mail.ru/public/BWVp/T9d5Q6bwC
Похожие вопросы