daily pastebin goal
50%
SHARE
TWEET

opencomputer pocket pc geolyzer scanner by KelLiN

a guest May 10th, 2015 263 Never
Upgrade to PRO!
ENDING IN00days00hours00mins00secs
  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
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top