+ Ответить в теме
Страница 1 из 5 1 2 3 ... ПоследняяПоследняя
Показано с 1 по 10 из 49

Тема: Разветвленная сеть команд

  1. #1
    Пользователь Аватар для NickLon
    Регистрация
    23.09.2009
    Страна
    Адрес
    Москва
    Возраст
    46
    Сообщений
    2,427

    Openforedit Разветвленная сеть команд

    Разветвленная сеть команд по условию. Для построения сессий. Что скажут мэтры?

    Всем привет!
    Возникла идея относительно построения разветвленного списка команд в строке команд машинисту. С ней чумовые сессии смогут строить даже те, кто не знаком с языком скриптования.
    Суть в следующем. Как стало известно, команда машиниста может получить список команд, присутствующих в строке команд машинисту. Раз она может получить этот список, значит она может и удалять команды оттуда, верно? Добавлять то вряд ли, но это и не требуется. Итак, некая команда под названием "Условие...", дальше по значку > вываливается список собственно условий "Если.../Иначе.../КонецЕсли", потом вываливается список переменных, которые заведены правилом InputTable, как это происходит в команде SVariables (изменить переменную), затем собственно список логических условий ">/</=" и потом целочисленное число.
    Когда дойдет очередь до выполнения команды, она проверяет истинность условия и если оно не ложно, передаёт управление следующей команде. Если ложно, ищет в предварительно взятом в массив списке команду "Если..." со значением "Иначе..." и команду "Если..." со значением "КонецЕсли". В ложном варианте удаляет все команды, начинающиеся с команды "Если..." до значения либо "Иначе", либо, если такое значение не встретилось, до значения "КонецЕсли" включительно. И передаёт управление следующей команде, которая осталась в результате проверки.
    Для чего нужно. Например, неизвестно какой грузовой состав прибудет на сортировочную станцию, то есть, из каких вагонов. Но когда состав формировался, то переменной PoluvagCoal присвоено значение 14. Когда на сортировочной станции маневровый по командам прицепится к составу, то сработает конструкция:
    "Условие...->Если PoluvagCoal=14 --здесь следует набор команд по отцепке 14 полувагонов и дальнейшей их разгрузки/погрузки углем--,Условие...->КонецЕсли
    Таким образом, если условие не выполнится, то команда "Условие...->Если" удалит всё, что находится от неё до "Условие...->КонецЕсли" включительно. И дальше будет выполняться команда, которая стоит за "Условие...->КонецЕсли" А там может быть ещё одна проверка, ещё и ещё... Ну при всё при том, конструкция Если .... КонецЕсли, думаю, должна быть в прямом списке команд машинисту: наверняка во всяких ScheduleLibrary шариться слишком накладно.
    Что скажете, мэтры скрипта?
    Иногда мы принимаем такие решения, которым тараканы в голове аплодируют стоя.

  2. Сказали спасибо: (6)


  3. #2
    Пользователь Аватар для MacSergey
    Регистрация
    27.01.2011
    Страна
    Адрес
    Москва
    Сообщений
    1,209

    По умолчанию

    хорошая идея, тоже об этом думал. интересно что скажет об этом трам и эриендир

  4. #3
    Пользователь Аватар для Skif
    Регистрация
    25.05.2010
    Адрес
    Минск
    Возраст
    33
    Сообщений
    1,224

    По умолчанию

    До сих пор помню, с каким наслаждением создавал сценарии для Starcraft, пользуясь подобным инструментом в их редакторе. Так что я очень и очень за.
    Это наша-то колея узкая? Да это просто ваша слишком широкая!

  5. #4
    Пользователь Аватар для Ant.taranish
    Регистрация
    21.03.2011
    Страна
    Возраст
    29
    Сообщений
    582

    По умолчанию

    NickLon, вообще то, что ты описал, вполне можно реализовать правилами. Другое дело, что не очень удобно, особенно если таких "если... иначе" в сценарии много.
    Ну а если уж делать специальную команду, то можно поступить гораздо проще - взять за основу команду SVariable и сделать так, чтобы она, однократно проверив условие, целиком заданное в InputTable (выпадающие списки логических условий и значений не нужны), либо переходила к следующей команде, либо вставляла впереди уже имеющихся в списке команд набор команд из БОК или ScheduleLibrary. Согласись, вставить набор если "истинно", гораздо проще, чем убрать набор, если "ложно".

  6. #5
    Пользователь Аватар для NickLon
    Регистрация
    23.09.2009
    Страна
    Адрес
    Москва
    Возраст
    46
    Сообщений
    2,427
    Автор

    По умолчанию

    Цитата Сообщение от Ant.taranish Посмотреть сообщение
    NickLon, вообще то, что ты описал, вполне можно реализовать правилами. Другое дело, что не очень удобно, особенно если таких "если... иначе" в сценарии много.
    Собственно, сейчас так и делаю. То, что это "не совсем удобно", это всё равно, что сказать, что "не совсем удобно чесать правой пяткой левое ухо". Правила работают по триггеру (маркеру), соответственно, на все случаи жизни тебе надо расставить эти путевые объекты. Но настройка их - это вообще отдельная песня. Если для поездного режима можно ещё как-то приспособится, опять же таки, принимая кучу условностей, то для маневрового - практически не реально.
    Ну а если уж делать специальную команду, то можно поступить гораздо проще - взять за основу команду SVariable и сделать так, чтобы она, однократно проверив условие, целиком заданное в InputTable (выпадающие списки логических условий и значений не нужны), либо переходила к следующей команде, либо вставляла впереди уже имеющихся в списке команд набор команд из БОК или ScheduleLibrary. Согласись, вставить набор если "истинно", гораздо проще, чем убрать набор, если "ложно".
    По поводу прописи в InputTable полного условия - согласен. Именно так там это и делается. А вот по поводу удаления и вставки, тут сначала я погорячился, а потом и ты не увидел. Удаление производится, наверное, по индексу массива. Но в этом случае out of range - обеспечено! Вставка - ну да, и Schedule, и БОК могут это делать. Тогда зачем изобретать велосипед? Если истинно - удалить слудующую +1 команду, а если ложно, то удалить следующую команду.
    Именно такой вариант я и предлагал раньше... Но идея не понравилась, потому и тему завел - интересно ли это будет другим?
    Иногда мы принимаем такие решения, которым тараканы в голове аплодируют стоя.

  7. #6
    Пользователь Аватар для Andrey
    Регистрация
    26.11.2009
    Адрес
    Минск. беларусь
    Сообщений
    484

    По умолчанию

    Вот я зарулил на эту забытую тему, да идея хорошая, но может быть у Эрендира в новом ботомашинисте что-то подобное уже проектируется?

  8. #7
    Пользователь Аватар для Эрендир
    Регистрация
    13.01.2010
    Страна
    Адрес
    Я Бот, живу в сети :)
    Возраст
    35
    Сообщений
    6,240

    По умолчанию

    Нет. Вот именно такого у меня нет, и пока даже не проектируется. Никто пока не предложил внятный концепт работы, как было с БОК.

  9. #8
    Пользователь Аватар для NickLon
    Регистрация
    23.09.2009
    Страна
    Адрес
    Москва
    Возраст
    46
    Сообщений
    2,427
    Автор

    По умолчанию

    Цитата Сообщение от Эрендир Посмотреть сообщение
    Никто пока не предложил внятный концепт работы, как было с БОК.
    Алексей, а по-моему здесь всё гораздо проще, чем с БОК. По крайней мере, зная, как ты быстро понял идею с библиотекой, не пойму, что сложного в механизме разветвленных команд? Вот я сейчас первый пост перечитал ещё раз, вроде всё понятно. По крайней мере идея. А возможно это сделать или нет - это уже на усмотрения скриптера.
    Вон, в БОК ты же сделал возможность перемещения списка не только внутри одной группы, но и между группами! Я бы до такого не додумался.
    Иногда мы принимаем такие решения, которым тараканы в голове аплодируют стоя.

  10. #9
    Пользователь Аватар для Эрендир
    Регистрация
    13.01.2010
    Страна
    Адрес
    Я Бот, живу в сети :)
    Возраст
    35
    Сообщений
    6,240

    По умолчанию

    Я пока утоп в пассажиропотоке. Маркерную часть сделал. Теперь делаю активные платформы. Доделаю, подумаю на эту тему. Без обещаний.

  11. #10
    Пользователь Аватар для Andrey
    Регистрация
    26.11.2009
    Адрес
    Минск. беларусь
    Сообщений
    484

    По умолчанию

    Леш, а ведь по логике эта разветвленная сеть команд пригодилась-бы при "разруливании" пассажиропотоков на больших станциях? Или это уже другой алгоритм?

+ Ответить в теме
Страница 1 из 5 1 2 3 ... ПоследняяПоследняя

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения