Дополнительно: несколько условий — КиберПедия 

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

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

Дополнительно: несколько условий

2021-11-25 14
Дополнительно: несколько условий 0.00 из 5.00 0 оценок
Заказать работу

Вы можете использовать несколько логических тестов для опции; если вы это сделаете, все тесты должны быть пройдены, чтобы опция появилась.

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

+ { visit_paris } { not bored_of_paris }

   [Return to Paris] -> visit_paris

Логические операторы: И и ИЛИ

Вышеупомянутые «множественные условия» - это на самом деле просто условия с обычным оператором программирования AND. Чернила поддерживают and(также пишутся как &&) и or(также пишутся как ||) обычным способом, а также скобки.

*  { not (visit_paris or visit_rome) && (visit_london || visit_new_york) } [ Wait. Go where? I'm confused. ] -> visit_someplace

Для непрограммистов X and Yозначает, что X и Y должны быть истинными. X or Yозначает одно или оба. У нас нет xor.

Вы также можете использовать стандарт!для not, хотя это иногда будет сбивать с толку компилятор, который думает, что {!text}это единовременный список. Мы рекомендуем использовать, notпотому что отрицательные булевы тесты никогда не бывают такими захватывающими.

Дополнительно: метки узла / стежка фактически считаются

Тест:

*  {seen_clue} [Accuse Mr Jefferson]

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

Если он не равен нулю, он вернет true в тесте, подобном приведенному выше, но вы также можете быть более конкретным:

* {seen_clue > 3} [Flat-out arrest Mr Jefferson]

Дополнительно: больше логики

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

Переменный текст

Текст может отличаться

Пока что весь контент, который мы видели, был статичным, фиксированным фрагментом текста. Но содержимое также может меняться в момент печати.

Последовательности, циклы и другие альтернативы

The simplest variations of text are provided by alternatives, which are selected from depending on some kind of rule. ink supports several types. Alternatives are written inside {...} curly brackets, with elements separated by | symbols (vertical divider lines).

These are only useful if a piece of content is visited more than once!

Types of alternatives

Sequences (the default):

A sequence (or a "stopping block") is a set of alternatives that tracks how many times its been seen, and each time, shows the next element along. When it runs out of new content it continues the show the final element.

The radio hissed into life. {"Three!"|"Two!"|"One!"|There was the white noise racket of an explosion.|But it was just static.}

 

{I bought a coffee with my five-pound note.|I bought a second coffee for my friend.|I didn't have enough money to buy any more coffee.}

Cycles (marked with a &):

Cycles are like sequences, but they loop their content.

It was {&Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday} today.

Один раз (помечено!):

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

He told me a joke. {!I laughed politely.|I smiled.|I grimaced.|I promised myself to not react again.}

Перемешивание (помечено ~):

Перемешивание производит случайный вывод.

I tossed the coin. {~Heads|Tails}.

Особенности альтернатив

Альтернативы могут содержать пустые элементы.

I took a step forward. {!|Then the lights went out. -> eek}

Альтернативы могут быть вложенными.

The Ratbear {&{wastes no time and |}swipes|scratches} {&at you|into your {&leg|arm|cheek}}.

Альтернативы могут включать отклоняющиеся заявления.

I {waited.|waited some more.|snoozed.|woke up and waited more.|gave up and left. -> leave_post_office}

Их также можно использовать внутри текста выбора:

+ "Hello, {&Master|Monsieur Fogg|you|brown-eyes}!"[] I declared.

(... с одним предупреждением; вы не можете начать текст опции с {, так как он будет выглядеть как условный.)

(... но у предостережения есть предостережение, если вы выйдете из пробела, \ прежде чем ваши {чернила распознают его как текст.)

Примеры

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

Вот версия "удар-моль" с одним узлом. Обратите внимание, что мы используем однократные опции и запасной вариант, чтобы крот не перемещался, и игра всегда заканчивалась.

=== whack_a_mole ===

   {I heft the hammer.|{~Missed!|Nothing!|No good. Where is he?|Ah-ha! Got him! -> END}}

   The {&mole|{&nasty|blasted|foul} {&creature|rodent}} is {in here somewhere|hiding somewhere|still at large|laughing at me|still unwhacked|doomed}. <>

   {!I'll show him!|But this time he won't escape!}

   * [{&Hit|Smash|Try} top-left] -> whack_a_mole

   * [{&Whallop|Splat|Whack} top-right] -> whack_a_mole

   * [{&Blast|Hammer} middle] -> whack_a_mole

   * [{&Clobber|Bosh} bottom-left] -> whack_a_mole

   * [{&Nail|Thump} bottom-right] -> whack_a_mole

   * [] Then you collapse from hunger. The mole has defeated you!

          -> END

производит следующую «игру»:

I heft the hammer.

The mole is in here somewhere. I'll show him!

 

1: Hit top-left

2: Whallop top-right

3: Blast middle

4: Clobber bottom-left

5: Nail bottom-right

 

> 1

Missed!

The nasty creature is hiding somewhere. But this time he won't escape!

 

1: Splat top-right

2: Hammer middle

3: Bosh bottom-left

4: Thump bottom-right

 

> 4

Nothing!

The mole is still at large.

1: Whack top-right

2: Blast middle

3: Clobber bottom-left

 

> 2

Where is he?

The blasted rodent is laughing at me.

1: Whallop top-right

2: Bosh bottom-left

 

> 1

Ah-ha! Got him!

И вот небольшой совет по образу жизни. Обратите внимание на липкий выбор - приманка телевизора никогда не угаснет:

=== turn_on_television ===

I turned on the television {for the first time|for the second time|again|once more}, but there was {nothing good on, so I turned it off again|still nothing worth watching|even less to hold my interest than before|nothing but rubbish|a program about sharks and I don't like sharks|nothing on}.

+  [Try it again]          -> turn_on_television

*  [Go outside instead] -> go_outside_instead

 

=== go_outside_instead ===

-> END

Предварительный просмотр Sneak: многострочные альтернативы

У чернил есть и другой формат для создания альтернатив различных блоков содержимого. См. Раздел «Многострочные блоки» для получения подробной информации.

Условный текст

Текст также может варьироваться в зависимости от логических тестов, так же как и параметры.

{met_blofeld: "I saw him. Only for a moment." }

и

"His real name was {met_blofeld.learned_his_name: Franz|a secret}."

Они могут отображаться в виде отдельных строк или в разделе содержимого. Они даже могут быть вложенными, поэтому:

{met_blofeld: "I saw him. Only for a moment. His real name was {met_blofeld.learned_his_name: Franz|kept a secret}." | "I missed him. Was he particularly evil?" }

может производить либо:

"I saw him. Only for a moment. His real name was Franz."

или:

"I saw him. Only for a moment. His real name was kept a secret."

или:

"I missed him. Was he particularly evil?"

Game Queries and Functions

ink provides a few useful 'game level' queries about game state, for use in conditional logic. They're not quite parts of the language, but they're always available, and they can't be edited by the author. In a sense, they're the "standard library functions" of the language.

The convention is to name these in capital letters.

CHOICE_COUNT()

CHOICE_COUNT returns the number of options created so far in the current chunk. So for instance.

*  {false} Option A

* {true} Option B

* {CHOICE_COUNT() == 1} Option C

produces two options, B and C. This can be useful for controlling how many options a player gets on a turn.

TURNS()

This returns the number of game turns since the game began.

TURNS_SINCE(-> knot)

TURNS_SINCE returns the number of moves (formally, player inputs) since a particular knot/stitch was last visited.

A value of 0 means "was seen as part of the current chunk". A value of -1 means "has never been seen". Any other positive value means it has been seen that many turns ago.

*  {TURNS_SINCE(-> sleeping.intro) > 10} You are feeling tired... -> sleeping

* {TURNS_SINCE(-> laugh) == 0} You try to stop laughing.

Note that the parameter passed to TURNS_SINCE is a "divert target", not simply the knot address itself (because the knot address is a number - the read count - not a location in the story...)

TODO: (requirement of passing -c to the compiler)

Sneak preview: using TURNS_SINCE in a function

The TURNS_SINCE(->x) == 0 test is so useful it's often worth wrapping it up as an ink function.

=== function came_from(-> x)

   ~ return TURNS_SINCE(x) == 0

The section on functions outlines the syntax here a bit more clearly but the above allows you to say things like:

* {came_from(-> nice_welcome)} 'I'm happy to be here!'

* {came_from(-> nasty_welcome)} 'Let's keep this quick.'

... and have the game react to content the player saw just now.

SEED_RANDOM()

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

~ SEED_RANDOM(235)

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


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

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...

Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьше­ния длины пробега и улучшения маневрирования ВС при...

Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...

Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...



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

0.026 с.