Компьютерная графика для новичков. Opencomputers. #2
Итак, это снова я, сегодня я расскажу как делать более сложные вещи с Lua в OC, а именно:
- Очистка экрана;
- Коробочки;
- Кнопки.
Ну что-же, приступим
Вспомним-ка мы подключение API GPU.
--Старый вариантlocal component = require("component")local gpu = component.gpu--Новый вариантlocal gpu = require("component").gpu
Как вы видите теперь можно проще подключать API GPU.
Очистка экрана.
local w,h = gpu.getResolution() -- Узнаем разрешение монитораgpu.fill(1,1,w,h," ") --[[Тут мы заполняем пустым символом поле, начиная от верхнего левого угла экрана и заканчивающегося правым нижним углом. Проще говоря весь экран заполняем пустотой. Перед этой строкой можно указать и цвет фона/символов. Так можно добиться ромашек цветного фона.]]--
Напишем для удобства функцию.
function clear(color_bg, color_fg) local w,h = gpu.getResolution() -- Узнаем разрешение монитора local oldbg = gpu.getBackground() -- Для того, чтобы потом вернуть старый local oldfg = gpu.getForeground() -- цвет фона и символов. gpu.setBackground(color_bg) -- Устанавливаем цвет фона. gpu.setForeground(color_fg) -- Устанавливаем цвет символов. gpu.fill(1,1,w,h, " ") -- Заполняем экран пустотой. gpu.setBackground(oldbg) -- Восстанавливаем старый цвет фона. gpu.setForeground(oldfg) -- Восстанавливаем старый цвет символов.end
Выглядит сложно, но на самом деле это просто. =)
Коробочка
function box(x,y,w,h,bg,fg,symb) -- Оставить symb " " и получится чистая коробка local oldbg = gpu.getBackground() local oldfg = gpu.getForeground() gpu.setBackground(color_bg) gpu.setForeground(color_fg) gpu.fill(x,y,w,h, symb) -- Рисуем боксик gpu.setBackground(oldbg) gpu.setForeground(oldfg) end
Все просто и легко. =)
Кнопка
(будет сложно)
local unicode = require("unicode") -- Нам потребуется юникод...-- Рисуем кнопку.function drawButton(x,y,bg,fg,text) local oldbg = gpu.getBackground() local oldfg = gpu.getForeground() gpu.setBackground(color_bg) gpu.setForeground(color_fg) gpu.set(x,y,text) -- Кнопка - текст с фоном. =) gpu.setBackground(oldbg) gpu.setForeground(oldfg) enddrawButton(2,2,0xff0000, 0x00ff00, "PressMeToWin")-- Обрабатывать клик будем по японский, можно использовать event.listen, но я для простоты использую event.pullwhile true do local name, add, xP, yP, b = event.pull("touch") if name ~= nil then if xP >= 2 and yP = 2 and xP <= 2 + unicode.len("PressMeToWin") then -- Тут сложно--Если нажали то... Например напишем "Ok" gpu.set(1,20, "Ok!") os.sleep(2) -- Спатки 2 секунды gpu.fill(1,20,10,10, " ") -- Очистить то, что написали end endend
Как-то так. =)
Пруф. =)
- 1
Войдите, чтобы подписаться
Подписчики
0
7 комментариев
Рекомендуемые комментарии