View difference between Paste ID: 6E0xQPWb and upPBiAEv
SHOW: | | - or go back to the newest paste.
1
local gpu = require('component').gpu
2
local computer = require('computer')
3
local pull_e = require('event').pull
4
local W, H = gpu.getResolution()
5
local un = require("unicode")
6
local b_color, f_color = gpu.getBackground(), gpu.getForeground()
7
 
8
local tButtons = {
9
  {
10
    visible = false,
11
    X = 1, --местоположение кнопки по Х
12
    Y = 5, --местоположение кнопки по У
13
    W = 13, --длина кнопки (длина названия кнопки + 3)
14
    H = 1,   --ширина кнопки
15
    color = 0x008800, --цвет фона кнопки
16
    textColor = 0xffff00,  --цвет текста кнопки
17
    text = 'Йа кнопофка',  --текст кнопки
18
    action = function()  --функция с командами которые выполняются по нажатию, в этом примере простой вывод сообщения
19
      gpu.setForeground(0xffffff)
20
      gpu.set(1, 1, 'А я её действие')
21
    end
22
  }
23
}
24
 
25
local function drawButton(n) -- функция рисования кнопки
26
  gpu.setBackground(tButtons[n].color) -- задаем цвет кнопки
27
  gpu.setForeground(tButtons[n].textColor) -- задаем цвет текста
28
  gpu.fill(tButtons[n].X, tButtons[n].Y, tButtons[n].W, tButtons[n].H, ' ') -- заливаем область
29
  gpu.set(tButtons[n].X+(tButtons[n].W/2)-(un.len(tButtons[n].text)/2), tButtons[n].Y+(tButtons[n].H/2), tButtons[n].text) -- пишем текст по центру
30
end
31
 
32
local function toggleVisible(n) -- переключение видимости кнопки
33
  if tButtons[n].visible then -- если кнопка видима
34
    tButtons[n].visible = false -- отключаем
35
    gpu.setBackground(b_color) -- берем цвет фона, полученный при старте программы
36
    gpu.fill(tButtons[n].X, tButtons[n].Y, tButtons[n].W, tButtons[n].H, ' ') -- стираем кнопку
37
  else -- если кнопка не активна
38
    tButtons[n].visible = true -- активируем
39
    drawButton(n) -- запускаем отрисовку
40
  end
41
end
42
 
43
local function blink(n) -- мигание кнопки
44
  tButtons[n].color, tButtons[n].textColor = tButtons[n].textColor, tButtons[n].color -- меняем местами цвета фона и текста
45
  drawButton(n) -- отрисовываем кнопку
46
  os.sleep(0.09) -- делаем задержку
47
  tButtons[n].color, tButtons[n].textColor = tButtons[n].textColor, tButtons[n].color -- меняем цвета обратно
48
  drawButton(n) -- перерисовываем кнопку
49
end
50
 
51
gpu.fill(1, 1, W, H, ' ') -- очищаем экран
52
 
53
for i = 1, #tButtons do
54
  toggleVisible(i) -- активируем каждую кнопку
55
end
56
 
57
while true do
58
  local tEvent = {pull_e('touch')} -- ждем клика
59
  for i = 1, #tButtons do -- перебираем все кнопки
60
    if tButtons[i].visible then -- если кнопка активна
61
      if tEvent[3] >= tButtons[i].X and tEvent[3] <= tButtons[i].X+tButtons[i].W and tEvent[4] >= tButtons[i].Y and tEvent[4] <= tButtons[i].Y+tButtons[i].H then -- если клик произведен в пределах кнопки
62
       blink(i) -- мигнуть кнопкой
63
       tButtons[i].action() -- выполнить назначенный код
64
       break
65
      end
66
    end
67
  end
68
end