Xoandbit

Horizontal quarry program (disk/progr) CC

May 16th, 2012
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 12.08 KB | None | 0 0
  1. --Turtle funkcijas
  2.         -- Ielasa no faila kordinates
  3.         function f_ielas(fails,n)
  4.             local fh = io.open(fails, "r")
  5.             local atbilde = fh:read("*a")
  6.             fh:close()
  7.             sleep(0)
  8.             if n==true then
  9.             local atbild=1+atbilde
  10.             local atbild=atbild-1
  11.             return atbild
  12.             else
  13.             return atbilde
  14.             end
  15.         end
  16.        
  17.         function ielasa()
  18.         print("Sakam ielasit failus!")
  19.             x = f_ielas("x",true)
  20.             print("X kordinates ielasitas!")
  21.             y = f_ielas("y",true)
  22.             print("Y kordinates ielasitas!")
  23.             z = f_ielas("z",true)
  24.             print("Z kordinates ielasitas!")
  25.             f = f_ielas("f",true)
  26.             print("Ielasits uz kuru pusi robots pagriezts!")
  27.             xsak = f_ielas("xsak",true)
  28.             print("Xsak kordinates ielasitas!")
  29.             ysak = f_ielas("ysak",true)
  30.             print("Ysak kordinates ielasitas!")
  31.             zsak = f_ielas("zsak",true)
  32.             print("Zsak kordinates ielasitas!")
  33.             fsak = f_ielas("fsak",true)
  34.             print("Ielasits uz kuru pusi robots pagriezies sākumā!")
  35.             darb = f_ielas("darb",true)
  36.             print("Ielasits kada funkcija javeic!")
  37.            
  38.         end
  39.  
  40.         --Saglaba txt faila kordinates
  41.         function sagl(kuru)   -- Kuru var but f < saglaba virzienu        un        coor saglaba atrasanas vietu
  42.             if kuru=="f" then
  43.                 shell.run("delete","f")
  44.                             local fh = io.open("f", "w")
  45.                             fh:write(f)
  46.                             fh:close()
  47.             end
  48.        
  49.             if kuru=="coor" then
  50.             shell.run("delete","x")
  51.                             local fh = io.open("x","w")
  52.                             fh:write(x)
  53.                             fh:close()
  54.                             sleep(0)
  55.             shell.run("delete","y")
  56.                             local fh = io.open("y","w")
  57.                             fh:write(y)
  58.                             fh:close()
  59.                             sleep(0)
  60.             shell.run("delete","z")
  61.                             local fh = io.open("z","w")
  62.                             fh:write(z)
  63.                             fh:close()
  64.                             sleep(0)
  65.             end
  66.        
  67.         end
  68.        
  69.         function saglabat(fails, teksts)   -- Funkcija saglaba teksta faila tekstu
  70.         --shell.run("delete",fails)
  71.         fs.delete(fails)
  72.         local fh = io.open(fails,"w")
  73.                             fh:write(teksts)
  74.                             fh:close()
  75.         return true
  76.         end
  77.        
  78.         function vieta()
  79.             if f==0 then t={0,1} end
  80.             if f==1 then t={-1,0} end
  81.             if f==2 then t={0,-1} end
  82.             if f==3 then t={1,0} end
  83.             return t
  84.         end
  85.        
  86.         function pagrieziens()
  87.             if f>3 then f=0 end
  88.             if f<0 then f=3 end
  89.         --z ir 2
  90.         --x ir 1
  91.         end
  92.  
  93.        
  94.         --Ziemeli ir 2 un z samazinas
  95.         --Austrumi ir 3 un x pieaug
  96.         function paKreisi()
  97.                 f = f - 1
  98.                 turtle.turnLeft()
  99.                 pagrieziens()
  100.                 sagl("f")
  101.         end
  102.        
  103.         function paLabi()
  104.                 f = f + 1
  105.                 turtle.turnRight()
  106.                 pagrieziens()
  107.                 sagl("f")
  108.         end
  109.        
  110.         function uzPrieksu()
  111.                 if turtle.forward() then
  112.                         t=vieta()
  113.                         x=x+t[1]
  114.                         z=z+t[2]
  115.                         sagl("coor")
  116.                         sleep(0)
  117.                         return true
  118.                 else
  119.                 return false            
  120.                 end
  121.         end
  122.  
  123.         function uzAugsu()
  124.                 if turtle.up() then
  125.                         y=y+1
  126.                         sleep(0)
  127.                         sagl("coor")
  128.                         return true
  129.                 end
  130.                 return false            
  131.         end
  132.        
  133.         function uzLeju()
  134.                 if turtle.down() then
  135.                         y=y-1
  136.                         sleep(0)
  137.                         sagl("coor")
  138.                         return true
  139.                 end
  140.                 return false            
  141.         end
  142.        
  143.         function uzAtpakalu()
  144.                 if turtle.back() then
  145.                         t=vieta()
  146.                         x=x-t[1]
  147.                         z=z-t[2]
  148.                         sagl("coor")
  149.                         return true
  150.                 end
  151.                 return false            
  152.         end
  153.  
  154.         function Izmest()
  155.        
  156.         local i
  157.         for i=1,9 do
  158.             turtle.select(i)
  159.             turtle.drop()
  160.         end
  161.        
  162.         end
  163.  
  164.  
  165.         function UzAugsuSasist()
  166.        
  167.         if turtle.digUp() then
  168.             return true
  169.         else
  170.             return false
  171.         end
  172.                
  173.         end
  174.  
  175.  
  176.  
  177.         function UzPrieksuSasist()
  178.        
  179.         if turtle.dig() then
  180.             return true
  181.         else
  182.             return false
  183.         end
  184.                
  185.         end
  186.  
  187.  
  188.          function UzLejuSasist()
  189.        
  190.         if turtle.digDown() then
  191.             return true
  192.         else
  193.             return false
  194.         end
  195.                
  196.         end
  197.        
  198.        
  199.         function parbinv()  --Atdod true, ja pilna inv
  200.         local tmp
  201.         tmp=true
  202.        
  203.         for i=1,9 do
  204.         if (turtle.getItemCount(i)==0) then
  205.             tmp=false
  206.             break
  207.         end
  208.        
  209.         end
  210.        
  211.         return tmp
  212.        
  213.         end
  214.  
  215. --###############################################        
  216.  --Funkcijas apstrādes programmas
  217.  
  218.  function AprekinaRaksanu()
  219.  
  220.  if fsak==0 then
  221.  zraksana=zsak-(kolon-1)
  222.  xraksana=xsak-(rinda-1)
  223.  end
  224.  if fsak==1 then
  225.  zraksana=zsak-(kolon-1)
  226.  xraksana=xsak+(rinda-1)
  227.  end
  228.  if fsak==2 then
  229.  zraksana=zsak+(kolon-1)
  230.  xraksana=xsak+(rinda-1)
  231.  end
  232.  if fsak==3 then
  233.  zraksana=zsak+(kolon-1)
  234.  xraksana=xsak-(rinda-1)
  235.  end
  236.  
  237.  end
  238.  
  239.  function kluda()
  240. term.setCursorPos(2,6)
  241.     write("Notikusi kluda!")
  242.     -- if turtle.detectDown() then
  243.        -- turtle.up()
  244.         -- y=y-1
  245.        -- end
  246.     sleep(3)
  247.     os.reboot()
  248. end
  249.  
  250. function noklusana(xgal,zgal)
  251.         if x<xgal then
  252.             while f~=3 do paLabi() sleep(1) end
  253.             while x<xgal do
  254.                  sleep(0)
  255.                 atb=uzPrieksu()
  256.                 if atb==false then kluda() end
  257.             end
  258.         else
  259.             while f~=1 do paLabi() sleep(1) end
  260.             while x>xgal do
  261.                  sleep(0)
  262.                 atb=uzPrieksu()
  263.                 if atb==false then kluda() end
  264.             end
  265.         end
  266.    
  267.         if z>zgal then
  268.             while f~=2 do paLabi() sleep(1) end
  269.             while z>zgal do
  270.                  sleep(0)
  271.                 atb=uzPrieksu()
  272.                 if atb==false then kluda() end
  273.             end
  274.         else
  275.             while f~=0 do paLabi() sleep(1) end
  276.             while z<zgal do
  277.                  sleep(0)
  278.                  atb=uzPrieksu()
  279.                 if atb==false then kluda() end
  280.             end
  281.         end
  282.    
  283.     end
  284.  
  285.  
  286.  function UzSakumu()
  287.    while y<ysak do    
  288.     uzAugsu()    
  289.    end  
  290.    
  291.    noklusana(xsak,zsak)  
  292.  
  293.   while f~=fsak do
  294.  
  295.   paLabi()
  296.   sleep(1)
  297.  
  298.   end
  299.  
  300.   Izmest()
  301. end
  302.  
  303.  function UzRaksanu()
  304.  
  305.     paLabi()
  306.  
  307.  local i=1
  308.  
  309.  while i<rinda do
  310.  
  311.      if uzPrieksu() then  
  312.      i=i+1            
  313.      else    
  314.      UzPrieksuSasist()
  315.      if uzPrieksu() then
  316.             i=i+1
  317.             end
  318.      end
  319.          
  320.      end
  321.  
  322.     paLabi()
  323.    
  324.  end
  325.  
  326. function Rakt()
  327.  
  328. local i=1
  329.  
  330. while i<=garum do
  331.  
  332. if parbinv() then break end
  333. UzAugsuSasist()
  334. if parbinv() then break end
  335. UzLejuSasist()
  336. if parbinv() then break end
  337.  
  338. if i~=garum then
  339.  
  340.  while turtle.detect() do
  341.  UzPrieksuSasist()
  342.  end
  343.  if uzPrieksu() then
  344.  i=i+1
  345.  end
  346.  
  347.  end
  348.  
  349.  if i==garum then
  350.  i=i+1
  351.  while turtle.detectUp() do
  352.  UzAugsuSasist()
  353.  end
  354.  
  355.  UzLejuSasist()
  356.  end
  357.  
  358.  if parbinv() then break end
  359.  
  360. end
  361.  
  362. if (i>=garum) and (parbinv()==false) then
  363.  rinda=rinda+1
  364.  saglabat('rinda',rinda)  
  365. end
  366.  
  367. end
  368.  
  369.  
  370. --#########################################################
  371. --Programmas izskata funkcijas
  372.  
  373. --Virsraksts monitoram
  374. function virsraksts(top)
  375.     term.setCursorPos(3,2)
  376.     write(top)
  377. end
  378.  
  379. function izskats()
  380.     term.clear()
  381.     local i,j
  382.    
  383.        term.setCursorPos(1,1)  
  384.        write('+')
  385.     for i=2,(ekrx-1) do
  386.        term.setCursorPos(i,1)
  387.        write('-')
  388.        end
  389.     term.setCursorPos(ekrx,1)  
  390.        write('+')
  391.    
  392.        term.setCursorPos(1,ekry)  
  393.        write('+')
  394.     for i=2,(ekrx-1) do
  395.        term.setCursorPos(i,ekry)
  396.        write('-')
  397.        end
  398.     term.setCursorPos(ekrx,ekry)  
  399.        write('+')
  400.  
  401.     for i=2,(ekry-1) do
  402.        term.setCursorPos(1,i)
  403.        write('|')
  404.        term.setCursorPos(ekrx,i)
  405.        write('|')
  406.        end          
  407.  
  408.        
  409.        
  410.     virsraksts('Xoandbit racejs')  
  411.        
  412.     --    print("###################################")
  413.     --    print("#======Xoandbit pathfinders=v1====#")
  414.     --    print("                                   ")
  415.     --    print("                                   ")
  416.     --    print("                                   ")
  417.     --    print("                                   ")
  418.     --    print("                                   ")
  419.     --    print("                                   ")
  420.     --    print("                                   ")
  421.     --    print("                                   ")
  422.     --    print("                                   ")
  423.     --    print("###################################")
  424. end
  425.  
  426. --Jautajuma izskats
  427. function jautaj(top)
  428.     sleep(1)
  429.     term.setCursorPos(4,4)
  430.     write(top)
  431. end
  432.  
  433. --Vaicajums pec ievada
  434. function vaica()
  435.     term.setCursorPos(3,7)
  436.     status,nolasijums = pcall(read)
  437.     return nolasijums
  438. end
  439.  
  440. --Atbilde kaut kam
  441. function atbilde(atb)
  442.     term.setCursorPos(8,9)
  443.     write(atb)
  444. end
  445.  
  446. -- Izskata funkciju beigas
  447. --#############################################
  448. --Mainigo funkcijas
  449.  
  450.  
  451.  
  452. --Tagadejas lietas
  453. x=0
  454. y=0
  455. z=0
  456. f=0
  457. xsak=0
  458. ysak=0
  459. zsak=0
  460. fsak=0
  461. darb=0
  462. --Lietas uz kurieni!
  463. term.clear()
  464. term.setCursorPos(1,1)
  465. print("Palaizam programmu!")
  466. sleep(1)
  467. ielasa() -- ielasam koordinates
  468. print('Instalejam ekrana izmerus')
  469. ekrx,ekry=term.getSize()
  470. ekrx=ekrx-1
  471. ekry=ekry-1
  472. sleep(1)
  473. print('Instalejam programmas izskatu')
  474. sleep(1)
  475.  
  476.  
  477.  
  478. while true do
  479.  
  480. if darb==0 then
  481.    
  482.     input='s'
  483.     izskats()
  484.     jautaj('Ievadiet garumu!')
  485.     input=vaica()    
  486.     garum=input
  487.    
  488.     input='s'
  489.     izskats()
  490.     jautaj('Ievadiet platumu /pa labi/!')
  491.     input=vaica()    
  492.    
  493.     platum=input
  494.    
  495.     saglabat('atpakal',atpakal)
  496.     saglabat('garum',garum)
  497.     saglabat('platum',platum)
  498.     saglabat('kolon',1)
  499.     saglabat('rinda',1)
  500.    
  501.     saglabat('darb',1)
  502.     atbilde('Palaizam raceju')
  503.     sleep(1)
  504.     os.reboot()
  505.    
  506. else
  507.     if darb==1 then
  508.    
  509.     print()
  510.     print('INICIALIZEJAM RACEJU')
  511.    
  512.     garum=f_ielas('garum',true)
  513.     print('Ielasits')
  514.     platum=f_ielas('platum',true)
  515.     print('Ielasits')
  516.     kolon=f_ielas('kolon',true)
  517.     print('Ielasits')
  518.     rinda=f_ielas('rinda',true)
  519.     print('Ielasits')
  520.    
  521.     xraksana=0
  522.     zraksana=0    
  523.    
  524.     sleep(1)
  525.    
  526.     izskats()
  527.     jautaj('UZ SAKUMU')
  528.     UzSakumu()    
  529.    
  530.     while rinda<platum do
  531.    
  532.     izskats()
  533.     jautaj('UZ SAKUMU')
  534.     UzSakumu()
  535.  
  536.     izskats()
  537.     jautaj('Brauc rakt')    
  538.     UzRaksanu()
  539.    
  540.     izskats()
  541.     jautaj('ROKAM')
  542.     Rakt()
  543.    
  544.       if parbinv() then
  545.          izskats()
  546.          jautaj('UZ SAKUMU')        
  547.          UzSakumu()
  548.       end      
  549.        
  550.     end
  551.    
  552.     saglabat('darb',0)
  553.     os.reboot()
  554.   end
  555.  
  556. end
  557.  
  558. end
Advertisement
Add Comment
Please, Sign In to add comment