Интерактивные истории, текстовые игры и квесты
Регистрация / Вход
Посетите наш новый сайт AXMAJS.RU
Пишем интерактивную историю вместе. Часть 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.
Профиль
Закрыть
Для того, чтобы оставлять комментарии, необходимо зарегистрироваться и подтвердить в профиле указанный
При использовании любых материалов блога обязательно указание ссылки на источник
подскажите пожалуйста, возможно ли как-то сделать генерацию футбольного матча и результаты конкретного игрока если он главный персонаж... типа наподобие PRO Soccer Стань Легендой