Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- загружаем библиотеки и получаем прокси видеокарты
- local component = require("component")
- local event = require("event")
- local gpu = component.gpu
- -- константы — размер экрана
- WIDTH = 8
- HEIGHT = 6
- --============================ Ф У Н К Ц И И ==============================--
- -- отрисовка кругов
- function draw()
- -- очищаем экран
- gpu.setBackground(0x000000)
- gpu.fill(1, 1, WIDTH*2, HEIGHT, " ")
- -- рисуем все круги
- for i=#circles, 1, -1 do
- local x = circles[i][1]+1
- local y = circles[i][2]-circles[i][4]+2
- gpu.setBackground(circles[i][3])
- for c=1, (circles[i][4]-1)*4 do
- -- рисуется один "пиксель" круга
- if x>0 and x<=(WIDTH*2) then
- if y>0 and y<=HEIGHT then
- gpu.set((x-1)*2+1, y, " ")
- end
- end
- -- следующий "пиксель" круга
- if x>circles[i][1] then
- if y<circles[i][2] then
- x = x+1
- else
- x = x-1
- end
- y = y+1
- else
- if y>circles[i][2] then
- x = x-1
- else
- x = x+1
- end
- y = y-1
- end
- end
- -- обновление (круги увеличиваются в диаметре, если диаметр
- -- становится больше 8, круг удаляется)
- circles[i][4] = circles[i][4] + 1
- if circles[i][4] > WIDTH then table.remove(circles, i) end
- end
- end
- -- функция, которая конвертирует цвет в формате RGB в соответствующее
- -- ему шестнадцатеричное значение
- function rgb2hex(r, g, b)
- return r*65536+g*256+b
- end
- --===========================================================================--
- -- устанавливаем разрешение "танцпола"
- gpu.setResolution(WIDTH*2, HEIGHT)
- gpu.fill(1, 1, 16, 6, " ")
- -- таблица в которой будут храниться круги
- circles = {}
- -- главный цикл
- while true do
- -- обработка сигналов
- _, _, code, _, _ = event.pull(0.01, "key_down")
- _, _, x, y = event.pull(0.03, "walk")
- -- если получен сигнал walk создаем новый круг
- if x ~= nil then
- table.insert(circles, {x, y, rgb2hex(math.random(255), math.random(255), math.random(255)), 1})
- end
- -- отрисовываем кадр
- draw()
- -- выход из программы, если была нажата кнопка Q
- if code == 113 then break end
- end
- -- возвращаем монитор к нормальному состоянию =)
- gpu.setBackground(0x000000)
- gpu.fill(1, 1, WIDTH*2, HEIGHT, " ")
- gpu.setResolution(gpu.maxResolution())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement