Справочная карта MCxxxx 2.0 (НЗП)
GHub Platform · Гайд · 0 ответов · 5 просмотров

Нужен верный компаньон, который будет перечитывать код во время написания кода? В этом руководстве рассматриваются ТОЛЬКО команды, инструкции и другие основные элементы программирования — никаких пошаговых руководств, пасьянсов и ничего о проектах — но содержится гораздо больше полезной информации об этих вещах, вся информация собрана в одном месте для быстрого доступа. Надеюсь, это поможет вам в решении проблем, ничего не выдавая (все спойлеры помечены как таковые). Примечание автора: работа над этим еще ведется, и ваша помощь определенно будет полезна! Имена, выделенные курсивом после строк в списке команд, — это люди, которые внесли свой вклад в руководство в этой строке. В разделе пояснений будут использоваться прямые цитаты с указанием авторства. В конце также будут выданы кредиты. Если вы пишете код, в игре или нет, вы можете и должны, вероятно, перейти к разделу «Команды» — он здесь для людей, которые полностью заблудились. Эта информация также содержится в руководстве, и ее лучше всего использовать в таком виде, но я постараюсь облегчить ее чтение тем, кто перегружен. ОСНОВЫ (что это, черт возьми): Не расстраивайтесь, если вы здесь! Хотя проекты могут быть легкими или нет, если вы не знаете этих основ, вся игра невозможна. Потратьте столько времени, сколько вам необходимо, чтобы ознакомиться с этими идеями; они будут основой всего, что вы здесь делаете. Начнем с терминов: Термины Модуль — это любой компонент, который вы помещаете в проект. Они могут быть очень широкими и разнообразными, но для начала вы можете думать о них как о независимо работающих частях вашей машины. Некоторые модули делают только одну вещь (вы не можете написать для них инструкции), но большинству модулей (и особенно тем, о которых вы будете думать) можно дать небольшое количество инструкций, которые вы пишете сами. Модули предназначены для совместной работы (очень немногие проекты работают без совместной работы ваших модулей!), но каждый из них действует самостоятельно одновременно со всеми остальными, поэтому ваша работа в основном заключается в том, чтобы помочь им общаться и переводить полученную информацию в инструкции или данные для отправки. Для этого вы в основном будете писать команды и соединять модули друг с другом. Модули обмениваются данными с помощью контактов. Контакты — это внешние части модулей, к которым можно проложить провода для их соединения. Они выполняют всю работу по передаче и приему информации, а некоторые контакты могут выполнять и то, и другое. Для любого модуля, в который вы можете писать, то, что происходит на выводах, зависит от того, что вы написали. Команда — это любая инструкция, которую вы даете модулю. Их лучше всего рассматривать как простые функции, и обычно они появляются по одной в строке, за которой следуют вещи, которые модуль должен знать для выполнения этой инструкции. Команды будут перечислены с обязательными параметрами, а также некоторыми примечаниями по их использованию. Формат списка команд выглядит следующим образом: <команда> <параметр> <параметр2> <параметр3> <etc> <команда> — это имя основной инструкции, обычно три буквы, с которых начинается строка кода. <параметр> — обязательный элемент для выполнения инструкции. Параметров может быть несколько. К параметрам относятся следующие: R — регистр A. Регистры — это указатели на определенные значения, к которым может получить доступ модуль. Я – целое число. Целыми числами в этой игре являются целые числа от -999 до 999, включая 0. Ваши модули не могут обрабатывать числа большие или меньшие, а тем более десятичные или дробные, поэтому даже не пытайтесь. (В некоторых случаях это может раздражать — есть способы справиться с этим!) R/I — либо регистр, либо целое число. Большинство арифметических (математических) команд используют этот формат, поэтому вы можете использовать постоянное число (например, 123) или переменное число (конкретные значения, которые могут или не могут меняться, но к которым модуль имеет доступ). P - Контактный регистр. Это особый тип регистра, который указывает на значение, входящее или исходящее из модуля на одном из его выводов. Л - Этикетка. Вы можете помечать строки в своей программе. Для этого начните строку с названия вашего лейбла, за которым следует двоеточие (символ : ). Чаще всего вы будете использовать метки, чтобы указать модулю перейти к определенной части своей программы и запустить оттуда. О выводах Пока вы не приступили к делу, давайте начнем с двух самых больших типов контактов, которые вы увидите: Простые контакты ввода-вывода (I/O) (все начинаются с буквы p). Эти контакты проще всего объяснить — их можно использовать для записи (отправки) или чтения (получения) данных. Если модуль записывает данные в один из них, он отправляет целочисленное значение подключенному модулю до тех пор, пока что-то не изменит его. Они не забывают, пока им не дают других инструкций: запишите значение на вывод ввода-вывода, и он сможет и будет продолжать отправлять эти данные вечно. Вы можете использовать те же контакты для чтения этих значений, поступающих от другого модуля — когда они получают значение от подключенного контакта, они считывают его и предлагают часть информации для своего модуля. Самая большая проблема с контактами ввода-вывода заключается в том, что они не могут выполнять обе функции одновременно; они будут либо читать, либо писать, и хотя они могут переключаться между ними, когда вывод ввода-вывода выполняет одно действие, другой останавливается. Выводы XBus (все начинаются с буквы x) Выводы XBus также могут записывать или читать данные, но у них другой стиль работы. Вместо того, чтобы вывод ввода-вывода постоянно отправлял или получал данные до тех пор, пока не изменяются инструкции, XBus записывает значение только один раз, чтобы другой вывод XBus мог прочитать его только один раз. Вы можете спросить, зачем мне использовать контакты XBus? Первая и лучшая причина — отправить инструкцию, которая запускает действие в другом модуле. Когда вы сообщаете выводу XBus о необходимости записи, он отправляет заданное значение, но не делает ничего, пока значение не будет получено; когда вы сообщаете контакту XBus о чтении, он будет ждать появления значения, прежде чем двигаться дальше. Это позволяет вам эффективно заставить модуль ждать, пока другой не запросит информацию (или не отправит запрошенную информацию). С этим преимуществом связан большой недостаток XBus — он может ждать отправки или получения НАВСЕГДА. Если ничто не запрашивает его данные или не дает ему то, что он просил, он ничего не будет делать, и этот модуль перестанет работать - это может привести к тому, что ваш модуль по существу «заблокируется», когда он не сможет и не будет делать ничего больше, и остановит работу всей конструкции. В результате убедитесь, что каждый раз, когда вы записываете на вывод XBus, другой вывод будет читать его (в конце концов), иначе все быстро развалится. Давайте поговорим об одной последней вещи и еще одной основной причине, по которой ваши ранние проекты могут потерпеть неудачу: сон. Необходимо перевести модули в режим сна. Модуль, для которого вы пишете какие-либо инструкции, должен включать способ сна. Зачем спать? Длинная версия: модули, по сути, являются сверхмаленькими компьютерами и, как и компьютеры, могут выполнять (по крайней мере) тысячи инструкций в секунду. Хотя это может показаться удивительным, для нашего крошечного компьютера это также представляет собой серьезную опасность. Для каждой инструкции, которую обрабатывает модуль, он использует мощность, и если ничто не заставляет его время от времени зависать, он будет потреблять энергию бесконечно и без ограничений. В реальном мире, если бы компьютер сделал это, лучшее описание того, что произошло бы, — это огромное потребление энергии, за которым следует немного более драматичное возгорание из-за количества тепла, которое будет выделять вся эта мощность. Эта игра не описывает это в таких терминах, но по этой причине модуль, который не спит или перестает спать, приведет к провалу проекта.
ИсточникGHub Platform · автор12.08.2026, 08:00:22
Нужен верный компаньон, который будет перечитывать код во время написания кода? В этом руководстве рассматриваются ТОЛЬКО команды, инструкции и другие основные элементы программирования — никаких пошаговых руководств, пасьянсов и ничего о проектах — но содержится гораздо больше п…
Войдите, чтобы писать в группе