Я пытаюсь создать складскую систему хранения с использованием компьютерных черепах.Я хочу, чтобы черепаха могла определить, в каком блоке она находится, найти координаты сундука для этого предмета, затем перейти к этому сундуку и бросить предметы.Однако я не хочу вводить элемент и координаты для каждого элемента в игре.Я хочу, чтобы черепаха могла обнаружить, что есть предмет, которого у нее нет, положить предмет в неназначенный сундук и поместить этот предмет и новый сундук в свою таблицу предметов и координат.Я не могу понять, как получить таблицы, которые создает черепаха после обнаружения нового предмета, чтобы остаться после перезагрузки.Код все еще настроен для целей отладки.И если кто-нибудь может помочь мне составить программу, чтобы она могла определить разницу между такими вещами, как дуб и береза, я также хотел бы помочь с этим.Любая помощь будет оценена!Установка содержит черепаху, с входным сундуком перед ним, топливный сундук справа и склад сундуков позади него.
blockAmount = 3
highestVal = {2,0,3}
blockTypes = {
cobblestone = {2,0,1};
dirt = {2,0,2};
log = {2,0,3};
}
pos = {0,0,0}
looking = 0
function fuel()
if turtle.getFuelLevel() < 20 then
turtle.select(16)
turtle.refuel(1)
end
end
function left()
turtle.turnLeft()
looking = looking - 1
if looking < 0 then
looking = 3
end
end
function right()
turtle.turnRight()
looking = looking + 1
if looking > 3 then
looking = 0
end
end
function forward()
fuel()
if turtle.forward() then
if looking == 0 then
pos[1] = pos[1] - 1
elseif looking == 1 then
pos[3] = pos[3] - 1
elseif looking == 2 then
pos[1] = pos[1] + 1
elseif looking == 3 then
pos[3] = pos[3] + 1
else
end
end
end
function up()
fuel()
turtle.up()
pos[2] = pos[2] + 1
end
function down()
fuel()
turtle.down()
pos[2] = pos[2] - 1
end
function goHome()
while pos[3] > 0 do
while looking > 1 do
left()
end
forward()
end
while pos[2] > 0 do
down()
end
while pos[1] > 0 do
while looking > 0 do
left()
end
forward()
end
end
while true do
turtle.select(1)
while not turtle.suck() do
sleep(1)
end
itemDetails = turtle.getItemDetail()
name = itemDetails.name:match("^minecraft:(.+)$")
local elem = blockTypes[name]
right()
turtle.select(16)
turtle.suck(5)
turtle.select(1)
if elem then
while looking < 2 or looking > 2 do
right()
end
for i = pos[1],elem[1]-1 do
forward()
end
while looking > 3 or looking < 3 do
right()
end
for i = pos[3],elem[3]-1 do
forward()
end
for i = pos[2],elem[2]-1 do
up()
end
while looking < 2 or looking > 2 do
left()
end
turtle.select(1)
turtle.drop()
goHome()
right()
turtle.select(16)
turtle.drop()
turtle.select(1)
left()
else
blockAmount = blockAmount + 1
highestVal[3] = highestVal[3] + 1
if highestVal[3] > 5 then
highestVal[3] = 1
highestVal[2] = highestVal[2] + 1
end
if highestVal[2] > 4 then
highestVal[2] = 0
highestVal[1] = highestVal[1] + 2
end
print(name)
blockTypes[blockAmount] = name
blockTypes[name] = {highestVal[1],highestVal[2],highestVal[3]}
print(blockTypes[blockAmount])
print(blockTypes[name][1],blockTypes[name][2],blockTypes[name][3])
local elem = blockTypes[name]
left()
turtle.drop()
end
end
Я хочу, чтобы черепаха взяла предмет, например, sandstone
, заметьте, что у него нет предмета, поместите предмет и координаты нового сундука для него в свою базу данных,и пусть он положит предмет в сундук.Эта база данных также должна оставаться обновленной после перезагрузки, так что я думаю о файле, который она читает и записывает, но я не смог выяснить, как успешно это сделать.РЕДАКТИРОВАТЬ: я выяснил, как заставить черепаху создавать подстолы для новых предметов и назначать им сундук.Тем не менее, он не может отличить такие вещи, как разные шерсти, такие как голубая и зеленая шерсть, разные бревна, такие как береза и ель, и т. Д. Я также не знаю, как заставить вспомогательные таблицы оставаться после перезагрузки или когда явоссоединиться с миром.Опять же, любая помощь будет оценена!