Не очень давно я начал разрабатывать собственную РПГ игру в стиле ADoM. Все, кто хочет узнать про нее, лезте на мой сайт [ .www ] и качайте оттуда ее зародыш(он обновляеется каждую неделю). Если у вас есть какие-либо советы или предложения, мы можем обсудить их вместе здесь-на форуме!
И еще... В ADoM'е при нажатии клавиши <i> появляется окно инвентаря. По идее, оно накладывается на окно игры, а при выходе из инвентаря оно закрывается. Если кто знает, как это сделать(для справки : я пишу игру на Turbo C++ 3.0), не поленитесь, пожалуйста, и пришлите свои советы, а также, несколько строк(страниц) программного кода на мой ящик [ vlad_mokr@mail.ru ] или оставьте указания здесь - на форуме.
Когда я делал нечто подобное, я запоминал в буфере содержимое экрана по размеру выводимого окна, выводил окно, затем убирал это окно и восстанавливал экран, - всё как обычно делают в таких случаях. При этом пользовался прямым доступом к видеопамяти. Адрес для текстовой страницы видеопамяти - $b800. На каждое знакоместо отводится два байта: один для кода символа, другой - для его аттрибутов, таким образом в режиме 80x25 символов получается 25 строк по 160 байтов каждая.
Я хотя бы правильно понял суть вопроса?..
Неактивен
А как перерисовать экран, если информация, отображённая на нём невесть откуда бралась (т.е. из многих и разных источников)? Постоянно держать всё содержимое экрана в отдельном буфере? Едва ли это разумно. Да и сложностей не меньше...
Неактивен
Представим ситуацию: на экран вывелось описание локации, после чего игрок выполнил несколько действий, получив на них лаконичные ответы (так чтобы всё это помещалось на одном экране), напечатал всякую тарабарщину (на что получил "Я не понимаю...") и т.п.
Как в такой ситуации можно заново перерисовать экран, не копируя его содержимого в буфер?..
Неактивен