Design Mode: 5. Adding Scoring to a Game
Некоторые странности перевода тех или иных слов/фраз сделаны специально для облегчения чтения и сохранения целостности предложений.
Adding Scoring to a Game (Подсчитываем очки в игре)

Подсчет очков встречается во многих играх, и в этом параграфе будет рассказано о системе подсчета очков.
-Creating a Behavior to Keep Score (Создание Поведения для сохранения очков/счёта)
-Displaying the Score (Отображение счёта на экран)
Creating a Behavior to Keep Score (Создание Поведения для сохранения очков/счёта)
Во многих играх в интерфейсе присутствует подсчет очков (как на картинке сверху). Во время создания игры на Стенсиле, мы используем Сцены для наших уровень, так что создание Scene Behavior (Поведения Сцены) для отображения и изменения очков это как раз то, чем мы займемся сейчас. Мы создаём Поведение Сцены для того, чтобы пользователь мог прикрепить это поведение на любом месте экрана. Также это позволит обращаться к Score через любого присутствующего в сцене Актёра.
Замечание: называйте поведения в соответствии с их смыслом. Для примера мы выбрали название «Score Manager».

Required Attributes (Требуемые атрибуты)
Создание первоочередных атрибутов сразу сохранит нам время потом, так что приступим. Здесь всего несколько атрибутов, для отслеживания координат и для отображения на экран. В таблице показано, какие атрибуты нам нужны:
|
Attribute Name |
Attribute Type |
Hidden? |
|
Score |
Number |
Yes |
|
Draw X |
Number |
No |
|
Draw Y |
Number |
No |
|
Score Font (Шрифт) |
Font |
No |

The Score Container (Контейнер для очков)
Первым делом, чтобы начать, нам нужен некий «контейнер», чтобы зажать в него, как в тиски, наши очёнки. И какой же из атрибутов годится под это лучше всего и почему? Конечно же, лучшим выбором является Score, так как это число (number), и мы можем менять его значения, как в «плюс», так и в «минус». Атрибут скрыт (hidden), так как у пользователя нет нужны в каждой сцене менять его в ручную, т.е. пользователю нет нужны настраивать этот атрибут. Конечно, бывают исключения, когда каждый уровень начинается с определенного значения очков, но это легко решаемо. Итак, когда сцена создана, мы приравниваем значение очков к нулю. Вот что нужно сделать:

Creating The Add Function (Создание функции добавления (очков))
Так как мы используем поведение сцены для отображения и изменения очков, какой способ предпочтительнее для изменения поведением значения очков? Использование Кастом Блоков (Custom Block) хороший вариант, так как позволяет задействовать любого актёра, находящегося в одной сцене с поведением Score Manager, чтобы увеличить или уменьшить значение атрибута Score (счёт) (Это ещё можно назвать «вызовом» функции для модификации значения очков). Мы начнем с создания кастом блока AddScore. Сделайте всё так, как показано на скриншоте ниже:

Как вы видите, мы назвали эту функцию AddScore. Мы также дали этой функции возможность изменять значение, которое сохранено в атрибуте Score. Мы сделали это добавлением числового атрибута Points to Add. Этот блок будет отображаться в других поведениях, как Add [number] to score, смотрите картинку ниже:
Increasing the Value of an Attribute (Увеличение значения атрибута)
Ну, раз мы создали кастом блок для увеличения значения, хранящегося в Score, теперь нужно создать блок, который непосредственно добавлял бы очки к счёту. Каким образом мы можем добавить очки, используя палитру под [Numbers & Text] -> [Math]?
Мы используем блок «приращения» (increment) для добавления любого значения к нашему числовому атрибуту. Какое значение наш кастом блок может воспринять, чтобы добавить его к счёту? Конечно же, другое число. Так что нам нужно «прирастить» Score, используя Points to Add (для этого перетащите мышкой блок Points to Add так, как показано на рисунке ниже):

Creating the Subtract Function (Создание функции вычитания очков)
Теперь мы знаем, как добавлять очки к общему счёту, и не помешает создать способ вычитания очков. Для вычитания очков из счета нужно создать другой кастом блок. Так что пройдите выше по параграфу и создайте его, аналогично AddScore.
Subtracting from an Attribute (Вычитание из атрибута)
Вычитание из атрибута производится так же, как и добавление к атрибуту, отличие в том лишь, что используем мы блок другой. Что противопоставить «приращению» можно? В случае этом слово «декремент» подойдет нам, что на русский «уменьшением» называется. И блок сделаем, который вычитать будет из Score с помощью Points to Subtract. Выглядеть как должно это смотри скорее:
Using the Custom Blocks (Использование Кастом Блоков)
Блоки, которые мы создали для добавления и вычитания очков можно использовать по-разному. Например, каждую секунду мы можем отнимать 10 очков, для этого нужно создать следующее поведение сцены (scene behavior):
Или можно добавлять игроку 50 очков каждый раз, когда он втаптывает врага в землю. Для этого можно добавить функцию Add в поведение Актёра. Это поведение будет проверять столкновение, и если герой раздавит врага, счёт увеличится на 50 очков. В зависимости от того, сколько раз нам нужно прыгнуть на врага, чтобы победить его, мы можем или подсчитать эти удары и добавлять очки каждый раз, или просто уничтожить актёра-врага после добавления очков.
Displaying The Score (Отображение счёта на экран)
Теперь мы можем сохранять значение нашего счёта, добавлять и вычитать очки. Это, конечно, хорошо, но нам нужно, чтобы игрок мог видеть количество очков. Для этого используем команды рисования, как эта:
![]()
Positioning the Score Display (Расположение элемента, показывающего Счёт)
Зная, как конвертировать число в текст, да так, чтобы этот текст выводился на экран, мы, собственно, сделаем это. Мы используем блок draw text at x,y. Обратите внимание, что он требует задать не только текст надписи, но и координаты, в которых мы будем рисовать наш элемент. Но мы специально до этого создали атрибуты как раз для этого случая. И этими атрибутами являются Draw X и Draw Y – а раз координаты это числа, то и эти атрибуты имеют тип «число».
Так, во время рисования, мы выводим счёт на экран, используя draw text [score] at ( x: [Draw X] y: [Draw Y] ). Всё это будет выглядеть так:
![]()
Setting the Score Font (Установка шрифт для отображения Счёта)
Мы отобразили наш счёт на экран, но было бы неплохо поменять вид текста на тот, который нам нравится. В других программах мы меняем отображение текста, меняя его шрифт. Что ж, Стенсил не исключение. Для этого мы заранее создали специальный атрибут Score Font, помните? И именно этот атрибут мы используем, когда нам нужно будет определить во время рисования, какой шрифт мы зададим нашему тексту. И если мы используем этот блок до того, как будет отображён наш текст, то шрифт поменяется. Вуаля!:

Summary (Подводя итог)
Теперь мы можем создать поведение, которое можно прикрепить к любой сцене, чтобы отслеживать счёт игрока. Можно добавлять очки или вычитать их, и отображать значение счёта в любой точке экрана.
Полное или частичное копирование данного перевода на бич-сайты да и вообще карается шлёпкой по попке. Перевёл Загё. На счет непонятностей и неточностей — в комментарии.
Спасибо огромное!!! Очень полезные переводы статей!!! Много новой для меня информации!
Желаю удачи и дальнейшего развития ресурса!!!