Керування екраном

У цьому розділі, ми розглянемо деякі функції, що дозволяють нам ефективно керувати екраном, що допомагає в написанні вишуканих програм. Особливо це корисно в розробці ігр.

Функція getyx()

Функція getyx() використовується, щоб з'ясувати поточні координати курсору. Вона заповнить координатами y та x надані їй аргументи. Оскільки getyx() являється макросом, ви не повинні передавати адреси змінних. Її можна викликати наступним чином:

getyx(win, y, x);
/* win - покажчик на вікно
 *   y, x - набудуть значення відповідних координат
 */

Функція getparyx() одержить початкові координати дочірнього вікна, відносно батьківського. Часом, це потрібно для того, щоб оновити дочірнє вікно. Під час розробки таких складних речей, як багаточисельні меню, може стати важко зберегти положення меню, координати їхніх перших опцій тощо. Простим вирішенням для цього являється створити меню в дочірніх вікнах, а пізніше, за допомогою getparyx(), визначити початкові координати меню.

Функції getbegyx() та getmaxyx() застосовуються для визначення початкових координат і максимальних координат поточного вікна. Ця функція, так само як і вищенаведені, корисна для керування основними та дочірніми вікнами.

Викид пам'яті екрану

Під час написання ігор, іноді необхідно бути в змозі зберегти стан екрану, та відновити його пізніше до того самого стану. Для цього можна скористатися з функції scr_dump(), що збереже зміст екрану у вказаний файл. Пізніше, цей вміст можна відновити за допомогою scr_restore(). Ці дві прості функції можна ефективно застосувати для підтримки динамічної гри з різноманітними сценаріями.

Викид пам'яті вікна

Для того, щоб зберегти та відтворити вікна, можна використати функції putwin() та getwin(). putwin() збереже стан поточного вікна до файлу, стан, який можна пізніше відновити за допомогою getwin().

Функція copywin() може застосовуватись для повного копіювання змісту одного вікна до іншого. Вона візьме вікно-джерело та вікно-призначення, як свої параметри, і, відповідно до вказаного прямокутника, скопіює прямокутну ділянку з вікна-джерела у призначення. Останній параметр вказу перезаписати, чи накласти вміст вікна-призначення. Якщо цей аргумент істинний, тоді копіювання не-деструктивне.