Авторизация
×

Логин (e-mail)

Пароль

Интерактивные истории, текстовые игры, квесты и визуальные новеллы
Гиперкнига

Библиотека    Блог

Пишем интерактивную историю вместе. Часть 17-я

Борис Семёнов (Morych), 10.05.13 | Практика ASM

Игра в игре

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

Наша история как раз обрывается на том, как леший Корян предлагает герою сыграть в зернь. Зернь — это игра основанная на чистом везении, древний аналог игры в кости. Такие игры довольно легко реализовывать, поскольку не нужно заниматься программированием искусственного интеллекта оппонента — победитель выявляется случайным образом. Правила игры герою (а заодно и читателю) пусть расскажет сам леший. Дополняем параграф «Разговор с лешим»:

Разговор с лешим

...
<<elseif $диалог_леший eq 7>>
    <<set $имя = $имя.charAt(0).toUpperCase() + $имя.substr(1).toLowerCase()>>
    Всяк ведает, что имя своё истинное каждому встречному-поперечному называть не след. Но леший и не спрашивал моё имя, а лишь, как меня зовут.
    -- <<print $имя>> моё прозвище, -- сказал я, -- а в леса не по своей воле подался.
    И я поведал лешему, какая со мной приключилась печаль, и как я оказался на поляне. Тот выслушал не перебивая, и ответил:
    -- Ясно. А меня можешь называть Корян. В зернь будешь играть, <<print $имя>>?
    [[Разузнать об игре|Разговор с лешим {$диалог_леший = 8}]]
    [[Согласиться играть|Разговор с лешим {$диалог_леший = 9}]]
    [[Отказаться играть|Разговор с лешим {$диалог_леший = 10}]]
<<elseif $диалог_леший eq 8>>
    -- Что это за игра такая, зернь? -- спросил я недоверчиво.
    -- Как, -- вскричал Корян, -- ты не ведаешь? Тогда тебе непременно нужно сыграть!
    Леший запустил руку в ближайший кустарник и добыл оттуда берёзовый туесок.
    -- Вот! -- принялся он греметь туеском перед моим лицом. -- Внутри пять камней, и каждый камень с одной стороны выкрашен белым, а с другой -- чёрным. Это и есть зернь. Трясём туесок и метаем камни наземь. У кого больше чёрных выпадет, тот и победил. А ежели все белые выметнешь, так это тоже хорошо. Пять белых больше четырёх чёрных, а пять чёрных -- это лучше всего. Ежели зернь поровну выбрасываем, то такой круг не в счёт. А игра за тем будет, кто первым пять побед возьмёт. Ну что, уяснил?
    [[Согласиться играть|Разговор с лешим {$диалог_леший = 9}]]
    [[Отказаться играть|Разговор с лешим {$диалог_леший = 10}]]
<<elseif $диалог_леший eq 9>>
    -- Значит, играем! -- обрадовался Корян.
    Леший расчистил место на земле, начертал сбоку наши имена и передал мне туесок, приговорив:
    -- Ты, <<print $имя>>, бросаешь первым.
    [[Начать игру|Игра {$игра = 0}]]
<<endif>>
...

А вот так игра будет выглядеть в готовой истории:

Рисунок 13 — Игра в игре.

После названия сцены показываем имена игроков и текущий счёт. Счёт специально отображаем с помощью крестиков (символы Юникода), а не цифр, чтобы создать впечатление, будто леший дорисовывает знаки после каждого раунда. Ниже размещаем описание текущего раунда, включая игровое поле и комментарии соперника. Игровое поле имеет размер 4 на 4 клетки, в каждой из которых с равной вероятностью может выпасть чёрная или белая зернь. Сама зернь представлена символами Юникода. В каждом раунде, благодаря использованию генератора случайных чисел, расположение символов будет другим. Таким образом мы создаём эффект брошенных на землю камней.

Продолжение следует...

Комментарии: 1.

Профиль


Закрыть
Kmax31
25.10.13 01:22

подскажите пожалуйста, возможно ли как-то сделать генерацию футбольного матча и результаты конкретного игрока если он главный персонаж... типа наподобие PRO Soccer Стань Легендой

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

При использовании любых материалов блога обязательно указание ссылки на источник