Advertisement
Guest User

4224

a guest
Sep 17th, 2019
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.12 KB | None | 0 0
  1. -- загружаем библиотеки и получаем прокси видеокарты
  2. local component = require("component")
  3. local event = require("event")
  4. local gpu = component.gpu
  5.  
  6. -- константы — размер экрана
  7. WIDTH = 8
  8. HEIGHT = 6
  9.  
  10. --============================ Ф У Н К Ц И И ==============================--
  11. -- отрисовка кругов
  12. function draw()
  13. -- очищаем экран
  14. gpu.setBackground(0x000000)
  15. gpu.fill(1, 1, WIDTH*2, HEIGHT, " ")
  16.  
  17. -- рисуем все круги
  18. for i=#circles, 1, -1 do
  19. local x = circles[i][1]+1
  20. local y = circles[i][2]-circles[i][4]+2
  21. gpu.setBackground(circles[i][3])
  22.  
  23. for c=1, (circles[i][4]-1)*4 do
  24. -- рисуется один "пиксель" круга
  25. if x>0 and x<=(WIDTH*2) then
  26. if y>0 and y<=HEIGHT then
  27. gpu.set((x-1)*2+1, y, " ")
  28. end
  29. end
  30. -- следующий "пиксель" круга
  31. if x>circles[i][1] then
  32. if y<circles[i][2] then
  33. x = x+1
  34. else
  35. x = x-1
  36. end
  37. y = y+1
  38. else
  39. if y>circles[i][2] then
  40. x = x-1
  41. else
  42. x = x+1
  43. end
  44. y = y-1
  45. end
  46. end
  47. -- обновление (круги увеличиваются в диаметре, если диаметр
  48. -- становится больше 8, круг удаляется)
  49. circles[i][4] = circles[i][4] + 1
  50. if circles[i][4] > WIDTH then table.remove(circles, i) end
  51. end
  52. end
  53.  
  54. -- функция, которая конвертирует цвет в формате RGB в соответствующее
  55. -- ему шестнадцатеричное значение
  56. function rgb2hex(r, g, b)
  57. return r*65536+g*256+b
  58. end
  59. --===========================================================================--
  60.  
  61. -- устанавливаем разрешение "танцпола"
  62. gpu.setResolution(WIDTH*2, HEIGHT)
  63. gpu.fill(1, 1, 16, 6, " ")
  64.  
  65. -- таблица в которой будут храниться круги
  66. circles = {}
  67.  
  68. -- главный цикл
  69. while true do
  70. -- обработка сигналов
  71. _, _, code, _, _ = event.pull(0.01, "key_down")
  72. _, _, x, y = event.pull(0.03, "walk")
  73.  
  74. -- если получен сигнал walk создаем новый круг
  75. if x ~= nil then
  76. table.insert(circles, {x, y, rgb2hex(math.random(255), math.random(255), math.random(255)), 1})
  77. end
  78.  
  79. -- отрисовываем кадр
  80. draw()
  81.  
  82. -- выход из программы, если была нажата кнопка Q
  83. if code == 113 then break end
  84. end
  85.  
  86. -- возвращаем монитор к нормальному состоянию =)
  87. gpu.setBackground(0x000000)
  88. gpu.fill(1, 1, WIDTH*2, HEIGHT, " ")
  89. gpu.setResolution(gpu.maxResolution())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement