Advertisement
Guest User

NG

a guest
Dec 10th, 2015
233
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.24 KB | None | 0 0
  1. local component = require("component")
  2. local hologram = component.hologram
  3. local c = 20
  4. --моделируем Снеговика
  5. local tSnowman = {10,10,11,11,11,12,12,12,12,11,11,11,10,9,8,7,6,7,8,8,9,9,9,9,9,8,8,7,6,7,6,6,6,6,6,6}
  6. --таблица падающих снежинок(Взаимствована у Doob, надеюсь он не против)
  7. local tSnow = {}
  8. for sn = 1, 32 do
  9.   tSnow[sn] = {}
  10. end
  11. --палитра цветов
  12. hologram.setPaletteColor(1, 0xFFFFFF)--белый
  13. hologram.setPaletteColor(2, 0x8B0000)--бардовый
  14. hologram.setPaletteColor(3, 0xFFA500)--оранжевый
  15.  
  16. --цикл рисования круга так же взаимствован у Doob
  17. local function circle(x0, y, z0, R, i)
  18.   local x = R
  19.   local z = 0
  20.   local err = -R
  21.   while z <= x do
  22.     hologram.set(x + x0, y, z+z0, i)
  23.     hologram.set(z + x0, y, x + z0, i)
  24.     hologram.set(-x + x0, y, z + z0, i)
  25.     hologram.set(-z + x0, y, x + z0, i)
  26.     hologram.set(-x + x0, y, -z + z0, i)
  27.     hologram.set(-z + x0, y, -x + z0, i)
  28.     hologram.set(x + x0, y, -z + z0, i)
  29.     hologram.set(z + x0, y, -x + z0, i)
  30.     z = z+1
  31.     if err <= 0 then
  32.       err = err + (2 * z + 1)
  33.     else
  34.       x = x - 1
  35.       err = err + (2 * (z - x) + 1)
  36.     end
  37.   end
  38. end
  39. --рисуем пуговицы они же глаза
  40. local function stud(x, y0, z0, i)
  41.   for y = 0, 1 do
  42.     for z = 0, 1 do
  43.       hologram.set(x, y0-y, z0-z, i)
  44.     end
  45.   end
  46. end
  47. -- рисуем снеговика
  48. local function snowman()
  49.   for i = 1, 30 do
  50.     circle(c,i,c, tSnowman[i], 1)--отрисовываем основу снеговика
  51.   end
  52.   for i = 30, #tSnowman do
  53.     circle(c,i,c, tSnowman[i], 2)--рисуем шапку
  54.   end
  55.   --рисуем глаза
  56.   stud(29, 23, 23, 3)
  57.   stud(29, 23, 17, 3)
  58.   --рисуем морковку
  59.   for x = 1, 6  do
  60.     for y = 1, 2 do
  61.       for z = 1, 2 do
  62.         hologram.set(27+x, 18+z, 18+y, 3)
  63.       end
  64.     end
  65.   end
  66.   -- правая рука
  67.   for x = 1, 7 do
  68.     y = 1
  69.     for y = 1, 3 do
  70.       y = y
  71.     end
  72.     hologram.set(20+y, 10+x, 10-x, 3)
  73.   end
  74.   -- левая рука
  75.   for x = 1, 7 do
  76.     y = 1
  77.     for y = 1, 3 do
  78.       y = y
  79.     end
  80.     hologram.set(20-y, 10+x, 31+x, 3)
  81.   end
  82.   --рисуем пуговицы
  83.   stud(30, 14, 20, 2)
  84.   stud(32, 10, 20, 2)
  85.   stud(32, 6, 20, 2)
  86.  
  87. end
  88.  
  89. local function gen_snow() -- генерируем таблицу для источника снежинок(из кода Doob)
  90.   local tbl = {}
  91.   local x, y
  92.   for g = 1, 10 do
  93.     x, y = math.random(1, 46), math.random(1, 46)
  94.     if tbl[x] == nil then
  95.       tbl[x] = {}
  96.     end
  97.     tbl[x][y] = 1
  98.   end
  99.   return tbl
  100. end
  101.  
  102. local function falling_snow() -- слвигаем таблицы со снежинками вниз(Doob)
  103.   tmp = {}
  104.   for s = 1, 32 do
  105.     tmp[s] = {}
  106.     tmp[s] = tSnow[s+1]
  107.   end
  108.   tSnow = tmp
  109.   tSnow[32] = gen_snow()
  110. end
  111.  
  112. local function animation(de) -- задаем указанное значение для снежинок(Doob)
  113.   for x = 1, 46 do
  114.     for z = 1, 46 do
  115.       for y = 1, 32 do
  116.         if tSnow[y][z] ~= nil then
  117.           if tSnow[y][z][x] == 1 then
  118.             hologram.set(x, y, z, de)
  119.           end
  120.         end
  121.       end
  122.     end
  123.   end
  124. end
  125.  
  126. hologram.clear()
  127.  
  128. while 1 do
  129.   snowman()
  130.   falling_snow()
  131.   animation(1)
  132.   os.sleep(2)
  133.   animation(0)
  134. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement