Урок 4.2. Иконка 6x6 пикселей: программа DRAWICON6(number)
Ввод: Действительные числа, целые числа
Эта программа является практически точной копией программы DRAWICON4, только здесь другие пределы.
Программа:
Текст после двойной косой черты // нужен только для пометок, его не обязательно вводить
EXPORT DRAWICON6(m)
BEGIN
// EWS 12/28/2020
// нужно ли пользователю вводить цвет?
LOCAL ch, R, G, B;
CHOOSE(ch, " Color?", " Black", " Yes");
IF ch == 1 THEN
ch := RGB(0, 0, 0);
ELSE
INPUT({R, G, B}, " Color Input",
{" Red", " Green", " Blue"}, { }, {0, 0, 0});
ch := RGB(R, G, B);
END;
// конвертировать m в действительное число, которое можно разделить
// ввести 1 как целое число (#)
IF TYPE(m) == 1 THEN
m := B→R(m);
END;
// удалить части отрицательного значения и дроби (чтобы принимались такие числа как -12 и 34.55)
m := ABS(IP(m));
// разрешить m быть в текстовом формате, сохранив ее в M
LOCAL M := m;
// проверить верхний предел
IF m > 2^36-1 THEN
MSGBOX("Excess!");
KILL;
END;
// разделить m на двоичные части и поместить их в нужно порядке
LOCAL n := 35, r, c,
mat := MAKELIST(0, X, 1, 36);
REPEAT
IF 2^n ≤ m THEN
m := m-2^n;
mat(n+1) := 1;
END;
n := n-1;
UNTIL n < 0;
mat := REVERSE(mat);
// команда list2mat(список, количество столбцов) находится в каталоге
mat := list2mat(mat, 6);
// нарисовать границу и обозначение
RECT();
RECT_P(129, 79, 219, 169, RGB(0, 0, 255),
RGB(255, 255, 255));
TEXTOUT_P(M, 139, 0, 4, RGB(0, 128, 0));
// использовать матрицу для рисования квадратов
// пиксели x = столбцы, y = ряды
FOR r FROM 1 TO 6 DO
FOR c FROM 1 TO 6 DO
IF mat(r, c) == 1 THEN
RECT_P(129+15 * (c-1), 79+15 * (r-1),
129+15*c, 79+15*r, ch);
END;
END;
END;
WAIT(0);
END;
Надеюсь, вам понравилось! Спасибо за внимание!
Интересно, насколько сложнее будет выполнить этот проект на калькуляторе TI-84 CE-T?
До новых встреч!