[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Computer Craft & Open Computers » Computer Craft » Шахтерские программы
Шахтерские программы
Aleksey2093Дата: Воскресенье, 15.02.2015, 12:34 | Сообщение # 1
Подполковник
Группа: Администраторы
Сообщений: 116
Репутация: 0
Статус: Offline
Обязательно!!!
Код программы вставляйте под спойлер или в код.
Сообщения без спойлера будут редактироваться, а при повторном нарушении удаляться.


Примеры:

Код
Код программы...
 
Aleksey2093Дата: Воскресенье, 15.02.2015, 12:52 | Сообщение # 2
Подполковник
Группа: Администраторы
Сообщений: 116
Репутация: 0
Статус: Offline
Программа вырывает этаж высотой 3 и площадью которую вы укажете.

Программа может выкидывать блоки из второго и третьего слота если вы ей скажете (можно выкидывать булыжник и землю например)

В первый слот черепашки помещается сундук эндера, в последний факелы.

Код
local lef = 3
local dlina = 0 --kol dvij vpered(x)
local kol = 0 --kol-vo povorotov (y)
local fak = 0 --fakel kazdue 5 yachek
local fakin = 0 --ukazatel na 5 ryad
local q = 11 --ukazatel na ustanovky fakel
local cobble = 0 --ukazatel na cobblestone and dirt
print("sunduk - one slot, fakely - last stop")
print("vvdedite dlinu")
dlina = read()
print("vvdetite kol-vo povorotov")
kol = read()
print("kuda povat? left or right")
while lef==3 do
local aww=read()
if aww=="left" then lef=0 end
if aww=="right" then lef=1 end
print("error") end

local qni
print("stavit fakel? yes or no ")
while q==11 do
qni=read()
if qni=="yes" then q=5 else
if qni=="no" then q=10 else
print("error") end end end

print("vybrasuvat musor 2 i 3 sloty? yes or no")
while cobble==0 do
cobble=read()
if cobble=="yes" then cobble=4 else
if cobble=="no" then cobble=2 else
print("error") end end
end

function fakel()
turtle.digDown()
turtle.select(16)
turtle.placeDown()
print("esst")
end

function sunduk()
turtle.select(1)
if not turtle.compareDown(1) then
turtle.digDown() turtle.placeDown() end
for i=cobble,15 do
turtle.select(i)
turtle.dropDown()
end
turtle.select(1)
--if turtle.compareDown() then turtle.digDown() end
turtle.digDown()
end

function run()
fak = 5
for i=1,dlina do
if cobble==4 then
if turtle.getItemCount(2)>20 then
turtle.select(2)
turtle.drop(turtle.getItemCount(2)-1) end
if turtle.getItemCount(3)>20 then
turtle.select(3)
turtle.drop(turtle.getItemCount(3)-1) end
end
turtle.select(1)
if turtle.getItemCount(15)>0 then
sunduk() end --
turtle.digUp()
turtle.digDown()
turtle.dig()
if fak==7 then
if fakin==1 then fakel() end
fak=0
else fak=fak+1 end
while not turtle.forward() do
turtle.dig() end
print("fak=",fak)
end
end

function povorot()
if lef == 0 then turtle.turnLeft()
turtle.digUp()
turtle.digDown()
turtle.dig()
while (not turtle.forward()) do
turtle.dig()
end
turtle.turnLeft()
lef = 1
else
turtle.turnRight()
turtle.digUp()
turtle.digDown()
turtle.dig()
while not turtle.forward() do
turtle.dig()
end
turtle.turnRight()
lef = 0
end
end

for i = 1,kol do
if q==5 then fakin=1 q=0 else q=q+1 end
run()
povorot()
fakin = 0
if turtle.getItemCount(16)<2 then break end
end
turtle.digDown()
fakel()


Если у вас нет эндер сундуков, то можете воспользоваться обычной программой. В этом случае в первый слот нужно положить простые сундуки или любые другие ячейки для хранения предметов.

Код
local am
local lef = 3
local dlina = 0 --kol dvij vpered(x)
local kol = 0 --kol-vo povorotov (y)
local fak = 0 --fakel kazdue 5 yachek
local fakin = 0 --ukazatel na 5 ryad
local q = 11 --ukazatel na ustanovky fakel
print("sunduk - one slot, fakely - last stop")
print("vvdedite dlinu")
dlina = read()
print("vvdetite kol-vo povorotov")
kol = read()
print("kuda povat? left or right")
while lef==3 do
am=read()
if am=="left" then lef=0 break else
if am=="right" then left=1 break else
print("error") end end end

print("stavit fakel? yes or no ")
while q==11 do
am=read()
if am=="yes" then q=5 break else
if am=="no" then q=10 break else
print("error") end end end

function fakel()
turtle.digDown()
turtle.select(16)
turtle.placeDown()
print("esst")
end

function sunduk()
turtle.select(1)
if turtle.getItemCount(1)<2 then
print("polojite v 1-y slot sunduki")
print("zatem nazmite enter")
read()
end
if not turtle.compareDown(1) then
turtle.digDown() turtle.placeDown() end
for i=2,15 do
turtle.select(i)
turtle.dropDown()
end
end

function run()
fak = 5
for i=1,dlina do
turtle.select(1)
if turtle.getItemCount(15)>0 then
sunduk() end --
turtle.select(1)
turtle.digUp()
if not turtle.compareDown() then turtle.digDown() end
while turtle.detect() do
turtle.dig() end
if fak==7 then
if fakin==1 then fakel() end
fak=0
else fak=fak+1 end
while not turtle.forward() do end
--print("fak=",fak)
end
end

function povorot()
if lef == 0 then turtle.turnLeft()
while turtle.detectUp() do turtle.digUp() end
turtle.digDown()
while turtle.detect() do turtle.dig() end
while not turtle.forward() do end
turtle.turnLeft()
lef = 1
else
turtle.turnRight()
while turtle.detectUp() do turtle.digUp() end
turtle.digDown()
while turtle.detect() do turtle.dig() end
while not turtle.forward() do turtle.forward() end
turtle.turnRight()
lef = 0
end
end

for i = 1,kol do
if q==5 then fakin=1 q=0 else q=q+1 end
run()
povorot()
fakin = 0
if turtle.getItemCount(16)<2 then break end
end
turtle.digDown()
fakel()


P.S. Программа немного недоделана (например, не ставит факелы нормально).
 
bryaksyakДата: Вторник, 24.02.2015, 09:04 | Сообщение # 3
Рядовой
Группа: Шахтеры
Сообщений: 1
Репутация: 0
Статус: Offline


Программа карьера с EnderChest'ом. Настройка диаметра, количества этажей, наличия полов между уровнями. Выкапывает лишний столбик 1х3 блока при переходе на нижний уровень. Не могу исправить это. Пробовал так: if j~=d then povorot() else povor() end, т.е. если не последний ряд на уровне, то поворачивать выкапывая блоки, если последний ряд, то просто поворачиваться. но черепашка в любом случае выполняет только первый вариант.
 
Aleksey2093Дата: Вторник, 03.03.2015, 12:25 | Сообщение # 4
Подполковник
Группа: Администраторы
Сообщений: 116
Репутация: 0
Статус: Offline
bryaksyak, привет.
Цитата bryaksyak ()
for i=1,ke do
for j=1,d do
for i=1, t do digForward() end
povorot()
end
vniz()
end

Попробуй вот в этом массиве ограничить последний digForward(). Чтобы при последнем проходе он не делал ход вперед. Или же попробуй удалить функцию отвечающую за этажи и поработай над программной. Ошибка именно в этом массиве я думаю. Когда буду за компьютером протестирую скажу, что получиться, если исправлю скину рабочий код.
 
Aleksey2093Дата: Среда, 15.04.2015, 23:36 | Сообщение # 5
Подполковник
Группа: Администраторы
Сообщений: 116
Репутация: 0
Статус: Offline
Цитата WeStrannik ()
Код
print("Dlinna?")  
L = read()  
print("Kolichestvo tonneley?")  
n = read()  
print("Povorot? (0 - nalevo, 1 - napravo)")  
k = read ()  
p=1-k  

function EndChest()  
   turtle.digDown()  
   turtle.select(1)  
   turtle.placeDown()  
    for j=2,16 do  
     turtle.select(j)  
     turtle.dropDown()  
    end  
   turtle.select(1)  
   turtle.digDown()  
   turtle.select(2)  
end  

function dig()  
turtle.digDown()  
while not turtle.forward() do turtle.dig() end  
turtle.digUp()  
turtle.digDown()  
if turtle.getItemCount(16)>0 then EndChest() end  
end  

function povorot()  
if p==0 then   
turtle.turnRight()  
while not turtle.forward() do turtle.dig() end  
turtle.digUp()  
turtle.digDown()  
while not turtle.forward() do turtle.dig() end  
turtle.digUp()  
   turtle.digDown()  
   while not turtle.forward() do turtle.dig() end  
   turtle.digUp()  
   turtle.digDown()  
   turtle.turnRight()  
   --while not turtle.forward() do turtle.dig() end  
p=1  
  else    
    turtle.turnLeft()  
   while not turtle.forward() do turtle.dig() end  
    turtle.digDown()  
    turtle.digUp()  
    while not turtle.forward() do turtle.dig() end  
    turtle.digDown()  
    turtle.digUp()  
    while not turtle.forward() do turtle.dig() end  
    turtle.digDown()  
    turtle.digUp()  
    turtle.turnLeft()  
    --while not turtle.forward() do turtle.dig() end  
    p=0  
  end  
end  

for e=1,n do   
  for a=1,L do dig() end  
  povorot()  
end

Цитата WeStrannik ()
1. Алмазные шахты - змейкой выкапывает параллельные тоннели 1х3 заданной длинны через каждые 2 блок

Оригинальное сообщение: http://great-world.ucoz.net/forum/12-16-39-16-1428408901
 
Форум » Computer Craft & Open Computers » Computer Craft » Шахтерские программы
  • Страница 1 из 1
  • 1
Поиск: