Узлы могут быть подразделены — КиберПедия 

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...

Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...

Узлы могут быть подразделены

2021-11-25 18
Узлы могут быть подразделены 0.00 из 5.00 0 оценок
Заказать работу

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

Узлы могут включать в себя подразделы, называемые «стежки». Они отмечены с помощью одного знака равенства.

=== the_orient_express ===

= in_first_class

  ...

= in_third_class

  ...

= in_the_guards_van

  ...

= missed_the_train

  ...

Например, можно использовать узел для сцены и швы для событий внутри сцены.

Швы имеют уникальные имена

Стежок может быть перенаправлен на использование его «адреса».

*  [Travel in third class]

   -> the_orient_express.in_third_class

 

*  [Travel in the guard's van]

   -> the_orient_express.in_the_guards_van

Первый стежок по умолчанию

Отклонение к узлу, который содержит стежки, переключится на первый стежок в узле. Так:

*  [Travel in first class]

   "First class, Monsieur. Where else?"

   -> the_orient_express

такой же как:

*  [Travel in first class]

   "First class, Monsieur. Where else?"

   -> the_orient_express.in_first_class

(... если мы не переместим порядок стежков внутри узла!)

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

=== the_orient_express ===

 

We boarded the train, but where?

*  [First class] -> in_first_class

*  [Second class] -> in_second_class

 

= in_first_class

  ...

= in_second_class

  ...

Местные отводы

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

-> the_orient_express

 

=== the_orient_express ===

= in_first_class

   I settled my master.

   *  [Move to third class]

          -> in_third_class

 

= in_third_class

   I put myself in third.

Это означает, что стежки и узлы не могут иметь общие имена, но несколько узлов могут содержать одно и то же имя стежка. (Так что и у Восточного Экспресса, и у Монголии СС может быть первый класс.)

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

Файлы сценариев могут быть объединены

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

INCLUDE newspaper.ink

INCLUDE cities/vienna.ink

INCLUDE journeys/orient_express.ink

Операторы включения всегда должны идти вверху файла, а не внутри узлов.

Нет никаких правил относительно того, в какой файл должен быть направлен узел. (Другими словами, разделение файлов не влияет на пространство имен игры).

5) Различные варианты

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

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

=== find_help ===

 

   You search desperately for a friendly face in the crowd.

   *  The woman in the hat[?] pushes you roughly aside. -> find_help

   *  The man with the briefcase[?] looks disgusted as you stumble past him. -> find_help

производит:

You search desperately for a friendly face in the crowd.

 

1: The woman in the hat?

2: The man with the briefcase?

 

> 1

The woman in the hat pushes you roughly aside.

You search desperately for a friendly face in the crowd.

 

1: The man with the briefcase?

 

>

... и в следующем цикле у вас не останется вариантов.

Резервный выбор

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

> 1

The man with the briefcase looks disgusted as you stumble past him.

You search desperately for a friendly face in the crowd.

 

Runtime error in tests/test.ink line 6: ran out of content. Do you need a '-> DONE' or '-> END'?

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

Резервный выбор - это просто «выбор без выбора текста»:

*  -> out_of_options

И, слегка нарушив синтаксис, мы можем сделать выбор по умолчанию с содержанием в нем, используя «стрелку выбора, затем»:

* ->

   Mulder never could explain how he got out of that burning box car. -> season_2

Пример резервного варианта

Добавление этого в предыдущий пример дает нам:

=== find_help ===

 

   You search desperately for a friendly face in the crowd.

   *  The woman in the hat[?] pushes you roughly aside. -> find_help

   *  The man with the briefcase[?] looks disgusted as you stumble past him. -> find_help

   *  ->

          But it is too late: you collapse onto the station platform. This is the end.

          -> END

и производит:

You search desperately for a friendly face in the crowd.

 

1: The woman in the hat?

2: The man with the briefcase?

 

> 1

The woman in the hat pushes you roughly aside.

You search desperately for a friendly face in the crowd.

 

1: The man with the briefcase?

 

> 1

The man with the briefcase looks disgusted as you stumble past him.

You search desperately for a friendly face in the crowd.

But it is too late: you collapse onto the station platform. This is the end.

Липкий выбор

Конечно, поведение «один раз» - это не всегда то, что мы хотим, поэтому у нас есть второй выбор: «липкий» выбор. Липкий выбор - просто тот, который не используется и отмечен +маркером.

=== homers_couch ===

   +  [Eat another donut]

          You eat another donut. -> homers_couch

   *  [Get off the couch]

          You struggle up off the couch to go and compose epic poetry.

          -> END

Выбор по умолчанию тоже может быть липким.

=== conversation_loop

   *  [Talk about the weather] -> chat_weather

   *  [Talk about the children] -> chat_children

   +  -> sit_in_silence_again

Условный выбор

Вы также можете включить или выключить выбор вручную. В чернилах достаточно много логики, но простейшие тесты - «видел ли игрок определенную часть контента».

Каждый узел / строчка в игре имеет уникальный адрес (поэтому его можно перенаправить на), и мы используем тот же адрес, чтобы проверить, был ли виден этот фрагмент контента.

*  { not visit_paris } [Go to Paris] -> visit_paris

+ { visit_paris  }        [Return to Paris] -> visit_paris

 

*  { visit_paris.met_estelle } [ Telephone Mme Estelle ] -> phone_estelle

Обратите внимание, что тест knot_nameверен, если какой-либо шов внутри этого узла был замечен.

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


Поделиться с друзьями:

Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...

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

Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...

Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.018 с.