Практика программирования (Бейсик, Си, Паскаль)



         

Красивые окна в текстовом режиме - часть 3


in>=0 && in<2 && bl>=0 && bl<2) {

_COLOR__S=cs ;

_COLOR_F=cf;

_INTENS=in;

_BLINK=bl; //объединение атрибутов цвета в одном байте

_ATTR=_BLINK << 7 | _COLOR_F << 4 | _INTENS << 3 | _COLOR__S;

}

else err_out("Ошибка при вызове set_attr"); }

Программа move_cur — перемещение курсора на п позиций вправо

Используя текущие координаты курсора (_ROW_CUR, _COL_CUR), функция вычисляет строку и столбец новой позиции и с помощью функции set_cur перемещает туда курсор. Если курсор выходит за пределы экрана, то его принудительно устанавливают в верхний левый угол.

void move_cur(int n)

{

int pos;

pos=_ROW_CUR* 80+_COL_CUR+n;

_ROW_CUR=pos/80;

_COL_CUR=pos-_ROW_CUR*8 0;

if(_ROW_CUR > 24)

{

_ROW_CUR=0; _COL_CUR=0;

}

set_cur(_ROW_CUR+1,_COL_CUR+1) ;

}

Программа box_abs — построение прямоугольника с рамкой и тенью

Контуры рамки образуются пробелами, одинарными и/или двойными "линиями" с помощью символов псевдографики. Массивы lu, id, ru и rd заполнены, кодами символов, используемыми для отображения левого верхнего (lu), левого нижнего (id), правого верхнего (ru) и правого нижнего (rd) углов рамки. В массивах horiz и vert находятся коды символов, формирующие горизонтальные и вертикальные линии рамки. По индексу bord из них извлекаются знаки соответствующей окантовки и некоторые из них повторяются rpth раз по горизонтали и rptv раз по вертикали.

Тень создается с помощью строки и столбца пробелов, окрашенных в серый цвет и расположенных со сдвигом на одну позицию относительно нижней и левой (shade=-1) или нижней и правой (shade=1) границ рамки. Внутренность окна заполняется пробелами цветом фона, ранее установленного с помощью функции set_attr.

void box_abs(int row1,int coll,int row2,int col2, int bord,int shade)

// rowl,coll - левый верхний угол,

// row2,co12 - правый нижний угол

// bord - номер типа рамки, от 0 до 4

// shade = -1(тень слева), 0(без), 1(тень справа)




Содержание  Назад  Вперед