Перейти к содержимому

IncluderWorld

  • записей
    11
  • комментария
    62
  • просмотра
    60 434

Компьютерная графика для новичков. Opencomputers. #2

LeshaInc

5 349 просмотров

Итак, это снова я, сегодня я расскажу как делать более сложные вещи с 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


7 комментариев


Рекомендуемые комментарии

А что значит "пруф"? Ибо я как-то не особо понимаю...

ПРУФ - переведено с английского (proof) : подтверждение, доказательство, доказывание, проверка, испытание, проба

Поделиться комментарием


Ссылка на комментарий

У меня в кнопке такой код заработал

 

  1. local unicode = require("unicode") -- Нам потребуется юникод...
  2. -- Рисуем кнопку.
  3. function drawButton(x,y,bg,fg,text)
  4. local oldbg = gpu.getBackground()
  5. local oldfg = gpu.getForeground()
  6. gpu.setBackground(bg)
  7. gpu.setForeground(fg)
  8. gpu.set(x,y,text) -- Кнопка - текст с фоном. =)
  9. gpu.setBackground(oldbg)
  10. gpu.setForeground(oldfg)
  11. end
  12.  
  13. drawButton(2,2,0xff0000, 0x00ff00, "PressMeToWin")
  14.  
  15. -- Обрабатывать клик будем по японский, можно использовать event.listen, но я для простоты использую event.pull
  16.  
  17. while true do
  18. local name, add, xP, yP, b = event.pull("touch")
  19. if name ~= nil then
  20. if xP >= 2 and yP == 2 and xP <= 2 + unicode.len("PressMeToWin") then -- Тут сложно--Если нажали то... Например напишем "Ok"
  21. gpu.set(1,20, "Ok!")
  22. os.sleep(2) -- Спатки 2 секунды
  23. gpu.fill(1,20,10,10, " ") -- Очистить то, что написали
  24. end
  25. end
  26. end

Поделиться комментарием


Ссылка на комментарий
Гость
Добавить комментарий...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...