Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- os.pullEvent = os.pullEventRaw
- -- b = peripheral.wrap("left") Iba pri compass turtle
- --Začiatok:
- term.clear()
- term.setCursorPos (1,1)
- print "Postav Turtlu na osu X smerom tak, aby ked isla dopredu pridala +1 na osi x."
- print " "
- print "Pre potvrdenie stlac klavesu 'y'"
- event, p1 = os.pullEvent("char")
- if event == "char" and p1 == "y" then
- term.clear()
- term.setCursorPos (1,1)
- print "Napis spravu ktora sa zobrazi ked dojde turtla do ciela:"
- print ("Sprava: ")
- term.setCursorPos (9,3)
- final = tostring(read())
- term.clear()
- term.setCursorPos (1,1)
- print "Napis suradnice turtly:"
- print ("x:")
- term.setCursorPos (4,2)
- x = tonumber(read())
- print ("y:")
- term.setCursorPos (4,3)
- y = tonumber(read())
- print ("z:")
- term.setCursorPos (4,4)
- z = tonumber(read())
- term.clear()
- term.setCursorPos (1,1)
- print "Napis suradnice miesta:"
- print ("x:")
- term.setCursorPos (4,2)
- gox = tonumber(read())
- print ("y:")
- term.setCursorPos (4,3)
- goy = tonumber(read())
- print ("z:")
- term.setCursorPos (4,4)
- goz = tonumber(read())
- --Kontrola paliva:
- tx = x
- tgox = gox
- tz = z
- tgoz = goz
- if goy > y then zostatoky = goy - y else zostatoky = y - goy end
- if tgox > tx then zostatokx = tgox - tx else zostatokx = tx - tgox end
- if tgoz > tz then zostatokz = tgoz - tz else zostatokz = tz - tgoz end
- math.abs(zostatokz)
- math.abs(zostatokx)
- totalfuel = zostatokz + zostatokx + zostatoky
- totaltotal = totalfuel + turtle.getFuelLevel()
- totalcoal = math.floor(totalfuel/80)
- totalcoal = totalcoal + 2
- if totalfuel < turtle.getFuelLevel() then
- else
- totalfuel = totalfuel - turtle.getFuelLevel()
- if totalcoal <= 64 then
- ter = false
- else
- ter = true
- coal = 0
- while totalcoal >= 64 do
- totalcoal = totalcoal - 64
- coal = coal + 1
- end
- end
- term.clear()
- term.setCursorPos (1,1)
- if ter == true then
- if totalcoal == 0 then
- print ("Turtla potrebuje "..coal.."x64 uhlia. Vloz uhlie do inventara turtlicky!")
- else
- print ("Turtla potrebuje "..coal.."x64 + "..totalcoal.." uhlia. Vloz uhlie do inventara turtlicky!")
- end
- else
- print ("Turtla potrebuje "..totalcoal.." uhlia. Vloz uhlie do inventara turtlicky!")
- end
- print ("Potrebuje: "..totaltotal.." paliva")
- while turtle.getFuelLevel() < totaltotal do
- for l = 1,16 do
- turtle.select(l)
- turtle.refuel(64)
- term.setCursorPos (1,4)
- print ("Palivo: "..turtle.getFuelLevel().."")
- if turtle.getFuelLevel() > totaltotal then
- turtle.select(1)
- end
- end
- end
- end
- --Timeout Turtly:
- for i=1,5 do
- term.clear()
- term.setCursorPos (1,1)
- print ("Turtla vyrazi za 5 sekund!")
- term.setCursorPos (1,2)
- print (i)
- sleep(1)
- end
- --Zápis pozícii:
- term.clear()
- term.setCursorPos (1,1)
- print ("Idem z pozicie: ")
- print ("x:"..x)
- print ("y:"..y)
- print ("z:"..z)
- term.setCursorPos (21,1)
- print ("Na poziciu: ")
- term.setCursorPos (21,2)
- print ("x:"..gox)
- term.setCursorPos (21,3)
- print ("y:"..goy)
- term.setCursorPos (21,4)
- print ("z:"..goz)
- end
- function goto(gox, goy, goz, x, y, z)
- --Preberanie premenných:
- testgox = tonumber(gox)
- testgoz = tonumber(goz)
- testx = tonumber(x)
- testz = tonumber(z)
- tx = x
- tgox = gox
- tz = z
- tgoz = goz
- --Zápis zostatku do cieľa:
- if goy > y then zostatoky = goy - y else zostatoky = y - goy end
- if tgox > tx then zostatokx = tgox - tx else zostatokx = tx - tgox end
- if tgoz > tz then zostatokz = tgoz - tz else zostatokz = tz - tgoz end
- math.abs(zostatokx)
- math.abs(zostatokz)
- xp = 1
- xm = 2
- zp = 3
- zm = 4
- curOrientation = xp
- --Funkcie ktoré potrebuje na správne orientovanie:
- function go()
- if turtle.forward() == false then
- up()
- return false
- else
- if turtle.detectDown() == false then down() end
- if curOrientation == xp then x = x+1
- elseif curOrientation == xm then x = x-1
- elseif curOrientation == zp then z = z+1
- elseif curOrientation == zm then z = z-1 end
- return true
- end
- end
- function left()
- turtle.turnLeft()
- if curOrientation == xp then curOrientation = zm
- elseif curOrientation == xm then curOrientation = zp
- elseif curOrientation == zp then curOrientation = xp
- elseif curOrientation == zm then curOrientation = xm end
- end
- function right()
- turtle.turnRight()
- if curOrientation == xp then curOrientation = zp
- elseif curOrientation == xm then curOrientation = zm
- elseif curOrientation == zp then curOrientation = xm
- elseif curOrientation == zm then curOrientation = xp end
- end
- function back()
- if turtle.forward() == false then
- turtle.dig()
- return false
- else
- if curOrientation == xp then x = x-1
- elseif curOrientation == xm then x = x+1
- elseif curOrientation == zp then x = z-1
- elseif curOrientation == zm then x = z+1 end
- end
- end
- function up()
- if turtle.up() == true then
- y = y+1
- return true
- else
- turtle.digUp()
- return false
- end
- end
- function down()
- if turtle.down() == true then
- y = y-1
- return true
- else
- turtle.digDown()
- return false
- end
- end
- --Funkcia ktora otočí turtlu na správnu pozíciu:
- function Smer()
- xsmer = false
- zsmer = false
- if testgox > testx then xsmer = true end
- if testgoz > testz then zsmer = true end
- if xsmer == false and zsmer == false then
- left()
- left()
- elseif xsmer == false and zsmer == true then
- right()
- elseif xsmer == true and zsmer == false then
- left()
- elseif xsmer == true and zsmer == true then
- end
- end
- --Zistenie či je väčšia hodnota y a goy
- function ud()
- if goy > y then
- return true
- else
- return false
- end
- end
- --Zapisovanie dát kde aktualne je a koľko má paliva:
- function current(x, y, z)
- term.clearLine(1,7)
- term.clearLine(1,8)
- term.clearLine(1,9)
- term.setCursorPos(1,6)
- print "Aktualne som na:"
- print ("x: "..x)
- print ("y: "..y)
- print ("z: "..z)
- term.setCursorPos(21,6)
- print ("Do ciela zostava:")
- term.setCursorPos(21,7)
- totalfuel = zostatokz + zostatokx + zostatoky
- print (totalfuel.." blocks")
- term.setCursorPos(21,8)
- print ("Palivo turtli:")
- term.setCursorPos(21,9)
- print (turtle.getFuelLevel())
- end
- --Základ turtly tzv. jadro:
- Smer()
- while true do
- if curOrientation == xp or curOrientation == xm then
- while zostatokx > 0 do
- if go() == true then zostatokx = zostatokx - 1 else end
- current(x, y, z)
- end
- right()
- while zostatokz > 0 do
- if go() == true then zostatokz = zostatokz - 1 else end
- current(x, y, z)
- end
- else
- while zostatokz > 0 do
- if go() == true then zostatokz = zostatokz - 1 else end
- current(x, y, z)
- end
- right()
- while zostatokx > 0 do
- if go() == true then zostatokx = zostatokx - 1 else end
- current(x, y, z)
- end
- end
- if goy > y then zostatoky = goy - y else zostatoky = y - goy end
- if ud() == true then
- while zostatoky > 0 do
- zostatoky = zostatoky - 1
- up()
- current(x, y, z)
- end
- else
- while zostatoky > 0 do
- zostatoky = zostatoky - 1
- down()
- current(x, y, z)
- end
- break
- end
- end
- --Na konci sa turtla otočí na stranu XP:
- while curOrientation ~= xp do
- right()
- current(x, y, z)
- end
- --Koniec kódu - Turtla zisťuje či dorazila na správne miesto:
- term.clear()
- if zostatokx == 0 and zostatokz == 0 and zostatoky == 0 then
- term.setCursorPos(1,1)
- print("Turtla uspesne dorazila na miesto so spravou:")
- print(final)
- else
- term.setCursorPos(1,1)
- print("Nastala necakana chyba!")
- print("Turtla nedorazila spravne do ciela!")
- end
- end
- --Spustenie celej funkcie:
- goto(gox, goy, goz, x, y, z)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement