Перейти к публикации
Форум - ComputerCraft
  • 0
Teen_Romance

Сравнение 2-х таблиц

Вопрос

Хочу написать программку для заказа автокрафта вещей в мэ через комп, предварительно сунув ресурсы для крафта в сундук.
У меня есть таблица с вещами которые нужны для крафта :

 

 

recepts = {}
solar = "solar panel"
recepts[solar] = {{"minecraft:redstone",0,6}, -- Первое это id, второе dmg, третье qty(колво вещей нужных для создания предмета)
                  {"minecraft:iron_ingot",0,10},
                  {"IC2:itemIngot",1,3},
                  {"IC2:itemIngot",0,3},
                  {"IC2:itemRubber",0,13},
                  {"minecraft:coal",0,3},
                  {"minecraft:cobblestone",0,6}} 

 

 

 

Я знаю как с помощью 

component.crystal.getAllStacks() 

вывести на экран какие у меня есть вещи в сундуке.

Но мне нужно сравнить то что в сундуке, с тем что нужно для крафта.

Как это реализовать? Есть идея сделать функцию которая будет с помощью метода выше считывать вещи из сундука и делать из них таблицу и потом их сравнивать, но я понятия не имею как это сделать грамотно. Не только насчет функции, но и на счет как сравнить 2 таблицы. Можете написать мне какой то простенький пример который я смогу использовать? Или хотя бы направить меня как это сделать эффективно и рационально. 

Изменено пользователем Teen_Romance

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Рекомендованные сообщения

  • 0
Но мне нужно сравнить то что в сундуке, с тем что нужно для крафта.

Как это реализовать?...

...и для того чтобы сравнивать нужные для крафта вещи с таблой сундука, нужно сделать таблу сундука, а я не знаю как. :(

Кстати, да. Вискас прав. Не заморачивайся пока с МЕ, и не особо думай о майнкрафте и сундуках и тем более о крафте. Они тебя будут только отвлекать. Забей пока на майн. Он тебе не нужен.  Абстрагируйся от него. Всегда иди от простого к сложному.

И кстати, таблицы у тебя не очень удачные для этого, но тем не менее.

 

Создай просто две таблицы, например:

item = { {"камень", 3}, {"палка", 2}}  --требуемые айтемы для крафта кирки
chest = { {"палка", 48}, {"светопылька", 64}, {"камень", 64}, {"редстончик", 64}, {"кактус", 7} }  --хлам в сундуке

И попробуй поработать с ними. САМ! 

 

И всегда помни поговорку:

Скажи мне — и я забуду, покажи мне — и я запомню, дай мне сделать — и я пойму.

 

Подсказка: Нужно как-то организовать цикл в цикле. Внешний цикл по таблице item, внутренний по таблице chest с прерыванием до удачного нахождения требуемого айтема и нужного кол-ва. И там уже сравнивай всё, что твоей душе угодно и делай выводы и принимай решение в зависимости от полученных результатов в программе. Программирование, это же не какая-то точная наука или инженерия или физика и химия. Это по сути лингвистика. Это просто язык, на котором ты пытаешься объяснить машине, что ей делать, так, как это бы например делал ты. Тебе например нужно скрафтить кирку. Как ты это делаешь? Открываешь сундук и смотришь сначала, пробегаешь глазами, есть ли там алмазы, и сколько их, потом смотришь, что для кирки еще нужны палки, опять пробегаешь глазами по айтемам в сундуке и смотришь, есть ли там палки, и сколько их. Машина же не понимает, что такое алмаз или палка и не видит их глазами. Ей вообще это до попки.

 

п.с. ну а то, что в сундуке, скорее всего, наверно можно легко получить каким-нибудь адаптером, транспозером или чем еще, хоть радаром из какого-то аддона. Это уже ерунда и следующий твой шаг.

  • Like 4

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

 

 

Но мне нужно сравнить то что в сундуке, с тем что нужно для крафта.

Это называется проще - нужно проверить последовательно все требуемые для крафта предметы на предмет их существования(наличия) в таблице сундука :)

Как это сделать? Да очень просто.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

Можно назвать как угодно. К сожалению это не решает мою проблему :(

Да и для того чтобы сравнивать нужные для крафта вещи с таблой сундука, нужно сделать таблу сундука, а я не знаю как.  :(

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

Можно назвать как угодно. К сожалению это не решает мою проблему :(

Да и для того чтобы сравнивать нужные для крафта вещи с таблой сундука, нужно сделать таблу сундука, а я не знаю как.  :(

я тебе говорил ты сам не сделаеш такую прогу пока, делай попроще сначала а потом мож когдато когда поймеш как с таблицами работать пробуй

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

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

 

 

И всегда помни поговорку: Скажи мне — и я забуду, покажи мне — и я запомню, дай мне сделать — и я пойму.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

 

 

Но как же я сделаю что то если я даже представления не имею как это сделать.

 

Разбивай задачу на более мелкие и простые.

Слона надо есть по частям.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

 

 

Разбивай задачу на более мелкие и простые. Слона надо есть по частям.
 

Собственно это есть часть моей общей задумки. На что мне еще разбить создание функции делающей таблу шмоток с сундука? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

Собственно это есть часть моей общей задумки. На что мне еще разбить создание функции делающей таблу шмоток с сундука?

 

На составные части.

Что такое - "сделать таблу шмоток"?

 

Это тебе надо пройти по каждому слоту и переписать оттуда информацию.

Тут сразу целый букет подзадач и вопросов:

* Как в Lua с помощью кода перебирать что-то от 1 до N?

* Как определить размер инвентаря в сундуке?

* Как получить информацию о предмете, который лежит в сундуке в слоте номер X?

* Как создать таблицу?

* Как записать информацию в таблицу?

* В каком виде хранить информацию о предмете в инвентаре, и вообще какие параметры этого предмета тебе надо хранить?

И т.п.

Когда разобьешь задачу на минимальные составляющие, и для каждой найдешь ответ и решение - ты сможешь сложить эти ответы и решения в более сложный код, который будет решать более общую задачу.

  • Like 5

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×