Advertisement
Guest User

opencomputer pocket pc geolyzer scanner by KelLiN

a guest
May 10th, 2015
464
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.01 KB | None | 0 0
  1. c=        require("component")
  2. computer= require("computer")
  3. event=    require("event")
  4. os=       require("os")
  5. term =    require("term")
  6. gpu=c.gpu
  7. s=c.geolyzer
  8.  
  9.  
  10. function intro()
  11.   print("Нажмите пробел для сканирования")
  12.   print("Нажмите q для выхода")
  13.   print("Нажмите с для очистки экрана")
  14.   print("Область сканирования 20 блоков на север")
  15. end
  16.  
  17. function scann()
  18. --сканирует область в 20 блоков от игрока в сторону севера.
  19.  
  20.   local cx,cy=1,1
  21.   local onThatX=0;--количество ресурсов для данного столбца. Используется для отрисовки глубины копки для нового
  22.   local maxy=1;--положение курсора по окончании сканирования
  23.   for x=1,20 do
  24.     gpu.set(cx,cy,tostring(x));--текущий столбец
  25.     data=s.scan(x,0);-- х инкриментируется до 20, у=0 ширина сканирования 1.
  26.     local t=0;--"табулятор" для двухсимвольной глубины.
  27.     if x>9 then t=1 end
  28.     for d=1,32 do
  29.       if data[d]>2 then
  30.         -- в data записаны плотности блоков. >2 означает сообщать о блоках с плотностью более 2.
  31.         -- Весь диапазон от 0 до 99. 99 это вроде игрок. Все ресурсы примерно одинаковой плотности в районе 3.
  32.         computer.beep(2000,0.1)
  33.         if onThatX>0 then
  34.           cy=cy+1
  35.           if (32-d)>9 and t==0 then t=1 end;--смещаем курсор для печати на один столбец дальше из-за цифт больше 9.
  36.           if cy<15 then
  37.             gpu.set(cx,cy,tostring(math.floor(32-d)));--Печатает глубину на которую нужно копать вниз относительно начальной высоты игрока.
  38.           else
  39.             -- для 80*15 экрана. Для больших экранов можно изменить и убрать.
  40.             gpu.set(cx,15,tostring(math.floor(32-d)))
  41.           end
  42.         end
  43.         onThatX=onThatX+1
  44.       end
  45.     end
  46.  
  47.     if t==1 then cx=cx+2 else cx=cx+1 end;t=0
  48.    
  49.     if cy>maxy then maxy=cy end;--положение курсора при продолжениие печати о "нажмите enter для продолжения".
  50.     cy=1
  51.  
  52.     onThatY=0;--обнуляем количество ресурсов для текущего столбца.
  53.   end
  54.   term.setCursor(1,maxy)
  55.   term.write("нажмите enter для продолжения")
  56.   io.read()
  57.   term.clear()
  58.   intro()
  59. end
  60.  
  61. intro()
  62.  
  63. while true do
  64.   _,_,key1,key2=event.pull("key_down")
  65.   if key2==57 then      term.clear();scann()
  66.   elseif key2==46 then  term.clear();intro()
  67.   elseif key2==16 then  term.clear();os.exit()
  68.   end
  69. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement