Перейти к содержимому
Бунтовые биты

Бунтовые биты

  • Дом
  • Новости
  • Путеводители
  • Видео-гиды
  • Примечания к патчу
  • Сообщить о нарушении
  • Переключить форму поиска

Руководство по программированию космических инженеров для начинающих

Опубликовано 08/20/2022 К 33iRobot33 Без комментариев на Руководство по программированию космических инженеров для начинающих
  • Заголовок: Космические инженеры
  • Дата выпуска: февраль 28, 2019
  • Разработчик: Кин Программный Дом
  • Издатель: Кин Программный Дом

Это руководство предназначено для людей, которые никогда или почти не имели дела с программированием.. Это поможет вам написать свои первые простые сценарии в Space Engineers.. Если вы ищете расширенное руководство, я рекомендую Вот этот от вредоносного ПО.

Отказ от ответственности

Английский не мой родной язык, поэтому не ждите лингвистического шедевра.. Кроме того, я никогда не изучал кодирование/программирование, а свои знания я накопил с помощью исследований в Google и раздражения друзей глупыми вопросами о программировании на C#.. Таким образом, это руководство может содержать неверные термины или незначительные ошибки.. Но я уверен, что это руководство позволит любому человеку, не имеющему каких-либо знаний о написании сценариев, создавать простые сценарии для космических инженеров..

Пример сценария

Я думаю, что лучший способ изучить сценарии в Space Engineers — это примеры.. В этом первом мы заставим ротор двигаться в определенную точку..

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

МойМоторСтатор Ротор;

Каждой переменной нужен тип (“МойМоторСтатор”) и имя (“Ротор”). Тип сообщает, какое значение мы можем сохранить в переменной.. Это значение может быть числом или просто текстом, но в нашем случае это блок ротора.. Тип для этого “МойМоторСтатор”. Мы можем просто выбрать любое имя, но рекомендуется выбрать такое, которое позволит легко читать и понимать сценарий., особенно когда это становится более сложным.

Каждая строка кода (как приговор) нужна точка с запятой “;” в конце. Об этом легко забыть, но всего одна пропущенная точка с запятой приводит к тому, что весь скрипт не работает должным образом..

Теперь мы дадим переменной ее значение: Роторный блок. В нашем случае мы просто говорим, что роторный блок называется «Ротор супермегастанции».’

Ротор = IMyTerminalGrid.GetBlockWithName(“Ротор супер-мега станции”) как IMyMotorStator;

Тип упоминается только при первом создании переменной.. Чтобы придать переменной значение, мы просто используем “=” символ.

Эта часть представляет собой метод адресации блока в нашей сетке.. Мы просто пишем точное имя блока между двумя “”. Не беспокойтесь слишком сильно о тексте, мы вернемся к этому позже. В конце мы снова пишем тип, чтобы убедиться, что блок, который присваивается нашей переменной, имеет правильный тип.. Если вы забыли об этом и есть, например, ЖК-панель с именем “Ротор супер-мега станции” оно будет присвоено переменной. Это может показаться ненужным, но просто используйте это, чтобы сделать скрипт более безопасным..

Теперь каждый раз, когда мы используем переменную «Ротор»’ в нашем скрипте игра обращается к нашему роторному блоку.

Давайте теперь переместим ротор в определенную точку.. Мы хотим, чтобы он вращался 45 градусов с положительной скоростью. Итак, мы должны сделать 2 вещи. Первый — установить максимальный угол 45 степени. Второй — придать ротору его скорость..

Начнем с первого шага:

Ротор.UpperLimitDeg = 45f;

Сначала мы сообщаем игре, что хотим использовать блок ротора.. Затем мы пишем “.” и добавьте свойство или метод, который мы хотим использовать. Этому свойству необходимо значение, чтобы установить максимальный предел роторов.. Итак, мы пишем “45”. The “ж” это тип значения (в данном случае число, но я вернусь к этому позже)

Переходим к настройке скорости. Это работает очень похоже, только свойство другое.. Мы установили скорость 1 в этом случае.

Ротор.TargetVelocityRPM = 1f;

И это все. После запуска скрипта, ротор будет вращаться со скоростью 1 об/мин, пока не достигнет 45 степени.

Весь скрипт будет выглядеть так:

МойМоторСтатор Ротор; Ротор = IMyTerminalGrid.GetBlockWithName(“Ротор супер-мега станции”) как IMyMotorStator; Ротор.UpperLimitDeg = 45f; Ротор.TargetVelocityRPM = 1f;

Я подведу итог:

Сначала сохраняем блок(с) в переменную, чтобы скрипт был более читаемым и его было проще использовать.. (Вы также можете просто написать это так:

IMyTerminalGrid.GetBlockWithName(“Ротор супер-мега станции “).ВерхнийПределДег = 45f;

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

Затем мы можем использовать свойства и методы для изменения настроек блоков..

Основы, необходимые для программирования в Space Engineers

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

“//” и “/* */” отмечать комментарии в вашем скрипте. Они будут игнорироваться при выполнении. Это означает, что вы можете что-то объяснить или просто дать заголовок своему коду.. “//” написанное впереди работает для текущей строки и “/* */” прилагается комментарий. Комментирование помогает понять сценарий, и его нельзя недооценивать..

Математические и логические операторы

Начнем с простых математических и логических операторов.. Это должно быть проще простого

Я просто перечислю самые важные.

“+”: Добавление

“-“: Вычитание

“*”: Умножение

“/”: Разделение

“%”: по модулю; это вернет остаток деления. Примеры: (5 / 2 = 2; остаток = 1) => 5 % 2 = 1; 7 % 4 = 3;

“==”: Равно; это используется для сравнения значений.

“!=”: Не равно; в основном противоположность “==”.

“>”, “>=”, “<“, “<=”: Больше/меньше чем (или равно); Также используется для сравнения значений.

“&&”: И; все переменные, связанные с этим, должны совпадать в вашем сравнении

“||”: Или; хотя бы одна из связанных с этим переменных должна совпадать в вашем сравнении

“=”: В скриптах это в основном используется для присвоения значений..

Типы переменных

Продолжим с типами переменных:

“логическое значение”: Переменная этого типа может иметь только одно из этих двух значений.: Это либо “истинный” или “ЛОЖЬ”.

“нить” : Это просто текст. Примером может быть сохранение текста в переменной для последующего отображения его на ЖК-экране..

“интервал” : Это число, но без десятичных знаков.. Значение не округляется; вместо этого все десятичные знаки будут просто обрезаны. А 4.9 сохранено как “интервал” является 4.

“плавать” : Это тоже число, но оно имеет десятичные знаки..

“двойной”: Третий вид числа. Это похоже на “плавать” но число может быть больше. Это не будет так важно для базового написания сценариев.. Я бы посоветовал использовать число с плавающей запятой, если только метод не требует двойного ввода в качестве входных данных.. Если вы назначаете числовое значение в своем скрипте, оно обычно рассматривается как “двойной”. Рассматриваться как “плавать” вам нужно написать “ж” за номером, нравиться “4.9ж”.

“IMyMotorСтатор”: Это должно звучать знакомо. Это тип блока от Space Engineers.. Есть много разных, и мы пока проигнорируем их..

Чтобы инициализировать (создавать) переменную, мы просто пишем тип и имя переменной и заканчиваем точкой с запятой:

инт а;

Мы можем присвоить ему значение после этого:

а = 1;

Мы также можем сделать эти два шага одновременно:

интервал б = 1;

Возможен расчет с тремя типами чисел. “интервал”, “плавать” и “двойной”.

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

Расширенные логические операторы

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

Давайте объясним использование более сложных логических операций..

If-функция

Начнем с “if-функция”. Он сравнивает 2 параметры и выполняет включенный код только в том случае, если сравнение правильное/верное. Я думаю, что самый простой способ объяснить это снова на примерах..

Допустим, у нас уже вращается ротор, и когда он находится в 30 градусов, свет должен загореться.

Как и в нашем первом скрипте, мы начинаем с сохранения наших блоков в переменных..

Ротор IMyMotorStator = GridTerminalSystem.GetBlockWithName(“Пример_Ротора”) как IMyMotorStator; IMyInteriorLight Light = GridTerminalSystem.GetBlockWithName(“Пример_света”) как IMyInteriorLight;

Начнем с “if-функция”.

если (Ротор.Угол == 0.5236f)

Это голова. Аргумент записывается между “()”. Это свойство требует, чтобы угол был в лучистом направлении.. 0.5236 рад, переведенный в градусы, равен 30.

{ Light.Enabled = правда; //Это включает свет, но об этом позже. }

Это тело. Он содержит код между “{}”. Он заключает в себе область кода, принадлежащую функции, написанной перед ним..

Сначала эта функция проверит, является ли аргумент в “()” истинно, а затем выполнить код между “{}” если аргумент верен. Если не, он будет игнорировать код между “{}”.

Мы также можем «обновить’ тот “if-функция” с “еще”. Это позволяет нам выполнять код в случае, если аргумент неверен.. Если утверждение в “if-функция” это правда, тот “еще” будет проигнорирован.

В этом примере мы хотим, чтобы свет выключался, если ротор не находится в положении 30 степени.

если (Ротор.Угол == 0.5236f) { Light.Enabled = правда; } еще { Свет.Включено = ложь; }

Наконец, вы также можете добавить “если еще”. Он будет действовать как “еще” но у него также есть условие, которое должно быть истинным для выполнения его кода. Допустим, мы хотим иметь 4 огни разных цветов, и мы хотим, чтобы определенный свет включался для четырех четвертей угла ротора.

Сначала нам нужно создать переменные для наших новых источников света..

IMyInteriorLight LightGreen = GridTerminalSystem.GetBlockWithName(“Пример_Light_1”) как IMyInteriorLight; IMyInteriorLight LightBlue = GridTerminalSystem.GetBlockWithName(“Пример_Light_2”) как IMyInteriorLight; IMyInteriorLight LightYellow = GridTerminalSystem.GetBlockWithName(“Пример_Light_3”) как IMyInteriorLight; IMyInteriorLight LightRed = GridTerminalSystem.GetBlockWithName(“Пример_Light_4”) как IMyInteriorLight;

Давайте начнем строить нашу “if-функция”

если (Ротор.Угол >= 0 && Ротор.Угол < 1.571)

Это проверяет, является ли угол 0 или выше, но и ниже 90 степени (1.571 рад). Оба условия должны быть соблюдены, чтобы утверждение было истинным.. Если бы вы это “Или-оператор” (“||”) вместо “И-оператор” (“&&”) только одно из условий должно быть истинным, чтобы утверждение было истинным.

{ LightGreen.Enabled = правда; LightBlue.Enabled = ложь; LightYellow.Enabled = ложь; LightRed.Enabled = ложь; }

Зеленый свет включается, все остальные огни выключаются.

Мы повторим это для других кварталов сейчас..

еще если (Ротор.Угол < 3.142)

3.142 рад равен 180 степени. Нам не нужно проверять, находится ли оно выше 90 градусов, потому что это “если еще” будет проверяться только в том случае, если “если” условие ложно и, следовательно, угол выше 90 степени.

{ LightGreen.Enabled = ложь; LightBlue.Enabled = правда; LightYellow.Enabled = ложь; LightRed.Enabled = ложь; } еще если (Ротор.Угол < 4.712)

4.712 рад равен 270 степени.

{ LightGreen.Enabled = ложь; LightBlue.Enabled = ложь; LightYellow.Enabled = правда; LightRed.Enabled = ложь; } еще { LightGreen.Enabled = ложь; LightBlue.Enabled = ложь; LightYellow.Enabled = ложь; LightRed.Enabled = правда; }

В последнем случае нам не нужно использовать “еще если” потому что остались только те углы, которые нам нужны в наших условиях (270-360 степени).

Выключатель

Следующая функция, которую мы можем использовать, — это “выключатель”. Это очень похоже на “если” и “если еще” созвездие, но все ваши условия должны основываться только на одном значении одной переменной. Кроме того, вы можете сравнить его только с “==”. Так что для нашего последнего примера это не сработает, так как нам нужно «меньше, чем’ (“<“) для наших условий.

В следующем примере мы меняем его на условия, представляющие собой точный угол, а не площадь.. Итак, скажем, мы хотим 4 случаи. 0, 90, 180 и 270 степени. Каждый угол включает один из наших источников света и выключает все остальные..

выключатель (Ротор.Угол)

Это голова. Между “()” записано значение, которое мы хотим проверить. Конечно, это также может быть переменная..

{ случай 0:

Угол сравнивается с “0”. Вы можете представить это как “если (Ротор.Угол == 0)”.

LightGreen.Enabled = правда; LightBlue.Enabled = ложь; LightYellow.Enabled = ложь; LightRed.Enabled = ложь; перерыв;

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

случай 1.571: LightGreen.Enabled = ложь; LightBlue.Enabled = правда; LightYellow.Enabled = ложь; LightRed.Enabled = ложь; перерыв; случай 3.142: LightGreen.Enabled = ложь; LightBlue.Enabled = ложь; LightYellow.Enabled = правда; LightRed.Enabled = ложь; перерыв; случай 4.712: LightGreen.Enabled = ложь; LightBlue.Enabled = ложь; LightYellow.Enabled = ложь; LightRed.Enabled = правда; перерыв; по умолчанию:

Это необязательно. Этот регистр используется, когда никакие другие случаи не соответствуют условию.. В нашем примере это используется, когда угол находится между 0, 90, 180 и 270 градусов, но не одно из этих точных чисел. Мы можем просто выключить весь свет, например..

LightGreen.Enabled = ложь; LightBlue.Enabled = ложь; LightYellow.Enabled = ложь; LightRed.Enabled = ложь; перерыв; }

Цикл for

Последним на данный момент является “для цикла”. Он используется для повторения одного и того же кода для группы переменных.. Чтобы создать эту группу переменных, нам нужно узнать о “список”. Он создает группу объектов, которые вы помещаете в список.; например все световые блоки на сетке. Создание нового списка немного отличается от создания переменной:

Список<IMyИнтерьерСвет> Свет = новый список<IMyИнтерьерСвет>();

Мы создали список с названием “Свет”. Также список нуждается в типе, это означает, что список не может содержать объекты другого типа. В данном случае наш тип “IMyИнтерьерСвет”. Это тип световых блоков в Space Engineers, но вы также можете составить список чисел типа “интервал”.

Теперь давайте заполним список всеми световыми блоками нашей сетки.:

GridTerminalSystem.GetBlockGroupWithName(“Огни супер-мега станций”).Получить блоки(Свет);

Это помещает все блоки из группы “Огни супер-мега станций” в список, упомянутый между “()” в конце.

Для обращения к одному объекту в нашем списке мы используем эту фразу: “Свет[0]”. Каждый объект в списке имеет номер, на который он реагирует.. Это всегда начинается с “0” для первого объекта и засчитывается в сторону увеличения. Если вы создаете список с 20 объекты, на которые будет реагировать первый объект “0” и последний ответит на “19”. Число, записанное между “[]” обращается к отдельному объекту. Чтобы включить третий свет, мы напишем это так:

Свет[2].Включено = правда;

Список настроен., Итак, давайте продолжим “для цикла”:

для (интервал я = 0; я < Длина света; я++)

Это голова. Между “()” у нас есть 3 разные параметры, разделенные точкой с запятой. Первый (“интервал я = 0”) создает переменную с именем “я” со стоимостью “0”. Третий (“я++”) просто добавляет “1” к нашей переменной “я” каждый раз, когда цикл выполняется. Второй параметр (“я < Длина света”) определяет, когда цикл должен закончиться. Это означает, что цикл выполняется до тех пор, пока “я” ниже определенного значения. Если бы ты написал “я < 20” цикл просто выполнится 20 раз. В этой ситуации я использовал Lights.length, что дает нам количество объектов, которые есть в списке “Свет” содержит. По сути, это означает “цикл for” выполняется так часто, как количество объектов в нашем списке.

{ Свет.Включено = правда;}[/код]

Это тело “цикл for”. С помощью переменной “я”, мы начинаем с первого объекта (“0”) в нашем списке. Поскольку мы добавляем “1” к “я” с каждым циклом, мы также продвигаемся по нашему списку объектов, 1. Таким образом, в конце “цикл for” каждый свет в списке включился.
Эти продвинутые логические операторы помогут вам при создании собственных сценариев..

Свойства и методы

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

Лучший способ поработать с ними — посмотреть все это в этом

[github.com]пока ты что-то пишешь. Огромное спасибо вредоносному ПО, которое его создало.. Там вы можете найти все типы блоков, их методы и свойства. (в общем, что можно сделать с блоком). Есть несколько вещей, которые вам нужно знать, чтобы использовать эти.

Чтобы использовать свойство/метод, вам нужно написать переменную блока., затем добавьте “.” а затем напишите свое свойство/метод.

Ротор.Прикрепить();

Большинство свойств могут либо получать, либо устанавливать значение. (некоторые получают только значения). Вы решаете это, либо придавая ему значение, добавляя что-то вроде ” = значение” или нет. Вот два примера, чтобы дать вам представление о том, как это работает.:

Получение значения:

Плавающий угол = Ротор.Угол;

Это сохраняет угол в нашей переменной “угол”.

Установка значения:

Ротор.RotorLock = true;

Это позволяет заблокировать ротор..

В руководстве вы также увидите, какой тип свойство/метод возвращает или требует ввода в качестве входных данных.. Это очень важно. Недвижимость “Роторлок” нуждается в “логическое значение” это означает, что он принимает только “истинный” или “ЛОЖЬ” как в- или вывод.

Пишем свой первый сценарий

Если вы откроете программируемый блок, вы увидите это.:

общественная программа() { } общественная пустота Сохранить() { } общественная пустота Главная(строковый аргумент, UpdateType updateSource) { }

Мы будем игнорировать “Программа” и “Сохранять” функция на данный момент. Весь ваш код будет помещен между двумя “{}” принадлежащий “Основной” функция. Это та часть, которая выполняется при использовании скрипта.. Если бы вы реализовали первый скрипт из начала этого руководства, это будет выглядеть так:

общественная программа() { } общественная пустота Сохранить() { } общественная пустота Главная(строковый аргумент, UpdateType updateSource) { МойМоторСтатор Ротор; Ротор = IMyTerminalGrid.GetBlockWithName (“Ротор супер-мега станции”) как IMyMotorStator; Ротор.UpperLimitDeg = 45f; Ротор.TargetVelocityRPM = 1f; }

Я настоятельно советую вам писать свои сценарии за пределами Space Engineers.. Для меня лучший способ — использовать Visual Studio вместе с расширением Malware.. Он предоставляет множество функций, которые вам понравятся во время кодирования.. Также можно найти руководство по его установке и использованию.

[github.com]в руководстве по вредоносному ПО.

Шпаргалка

Математические и логические операторы:

“+”

“-”

“*”

“/”

“%”

“==”

“!=”

“>”, “>=”, “<“, “<=”

“&&”

“||”

“=”

Типы значений:

“логическое значение”: правда/ложь

“нить”: текст

“интервал”: число без десятичных знаков

“плавать”: число с десятичными знаками

“двойной”: большее число

“список”: группа объектов

“IMyИнтерьерСвет”: пример типа блока

Расширенные логические операторы:

если (истинный) { } еще если (истинный) { } еще { } выключатель (переменная) { значение регистра 1: перерыв; значение регистра 2: перерыв; по умолчанию: перерыв; } для (интервал я = 0; я < ценить; я++) { }

Свойства/методы:

блок.метод(); переменная типа = блок.свойство; блок.свойство = значение;

Это все, чем мы делимся сегодня для этого. Космические инженеры гид. Это руководство было первоначально создано и написано 33iRobot33. На случай, если нам не удастся обновить это руководство, вы можете найти последнее обновление, следуя этому связь.

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

Навигация по публикациям

Предыдущий пост: Как исправить падение FPS в Thymesia, Лаг, и проблемы с заиканием
Следующий пост: Выжившие вампиры – Как разблокировать все предметы коллекции и сигму персонажа

Оставить ответ Отменить ответ

Ваш адрес электронной почты не будет опубликован. Обязательные поля отмечены *

  • Заголовок: Космические инженеры
  • Дата выпуска: февраль 28, 2019
  • Разработчик: Кин Программный Дом
  • Издатель: Кин Программный Дом

Отказ от ответственности

Весь цитируемый контент взят из соответствующих источников.. Если вы считаете, что мы использовали ваш контент без разрешения, обязательно свяжитесь с нами, и мы отнесемся к этому серьезно.
  • О нас
  • Связаться с нами
  • политика конфиденциальности
  • Условия использования

Авторское право © 2025 Бунтовые биты.

Питаться от Пресс-книга новостей Тема WordPress