Петраков Игорь Александрович: другие произведения.

Создаем текстовой квест

"Самиздат": [Регистрация] [Найти] [Рейтинги] [Обсуждения] [Новинки] [Обзоры] [Помощь|Техвопросы]
Ссылки:
Конкурсы романов на Author.Today
Загадка Лукоморья
 Ваша оценка:

  
  Создание текстового квеста в Microsoft Word
  
   Что за прелесть эти сказки! Каждая есть поэма!
   А.С. Пушкин.
  
   Итак, в Вашем распоряжении оказался компьютер с прилагающейся к нему программой Microsoft Word. Также у Вас есть, помимо прочего, огромное или просто большое желание сотворить свою игру для ПК. Ну что же, желание - это неплохо. Теперь нам нужно понять, что же такое, собственно, тестовой квест, и как его запечатлеть на экране эвм.
  Обычно текстовой квест - это сказочная история с узловыми моментами принятия решений или отгадыванием загадки. В зависимости от принятого решения играющий направляется в ту или другую сторону сказочного мира. Добрая половина успеха сказоччного квеста - написание сценария, "рыбы" - то есть его основного текста, который будет выводиться на экран эвм. Это, пожалуй, один из важнейших моментов в создании текстового квеста. От того, каким увлекательным будет текст сказки, зависит ее признание пользователем. Здесь же можно будет указать и фрагменты будущего программного кода ( что это такое - выясним чуть позже ).
  Объясним создание золотой "рыбы" квеста на примере. Предположим, наш квест будет создан по мотивам фильма "чародеи" и будет называться "Понедельник начинается в субботу".
  
  Словарик.
  UserForm - форма пользователя,
  Show - выводится на экран,
  Hide - закрывается.
  
  Основа квеста будет выглядеть так:
  UserForm1.
  Текст: "Эта необычная и трогательная история начинается для Вас в предновогодний вечер. За окном тихо идет снег. Вы развешиваете игрушки на мохнатой красавице ( не на Тигренке! ) и напеваете веселый мотив из популярного кинофильма, как вдруг раздается звонок в дверь. Недоумевая, что бы могло произойти, Вы открываете замок и видите на пороге таксиста в форменно фуражке.
  - Иван Пухов? - спрашивает он, - Срочно собирайтесь.
  - Куда? - уточняете Вы.
  - Как "куда"? В Китеж-рад. Вас там невеста ждет.
  И здесь Вы..
  Если - отказываетесь ехать, заявив таксисту "Нет у меня в Китеж-граже никакой невесты", то
  UserForm1.Hide
  UserForm2.Show
  Если - соглашаетесь отправиться в путь и выручить девушку, то
  UserForm1.Hide
  UserForm3.Show"
  Примечание. Как видите, здесь от первой формы пользователя ведут две "дорожки", которые выбирает играющий, - одна к форме пользователя 2, другая - к форме пользователя 3. Но продолжим.
  UserForm2.
  Текст: "Да.. Не везет нам с женихами. Таксист разочарованно удаляется, а Вы коротаете вечер за бутылочкой пива "Балтика", просматривая концерт М.Галкина и так и не узнав, что необыкновенного, загадочного и таинственного Вам предстояло пережить. ВСЕ".
  Код: UserForm2.Hide
  UserForm3.
  Текст: "С необыкновенной стремительностью таксист мчиться к вокзалу ( в своем автомобиле, разумеется ). Вы взбегаете по ступенькам вокзала, за Вами устремляется младшая сестра, готовая разделить Вашу участь, какой бы необычной она ни была. Впереди Вас ожидает пассажирский состав. Теперь осталось найти вагон, в котором Вас встретит гостеприимный проводник и теплое место. Для этого вспомните номер вагона в картине и укажите его в отделении"
  Примечание. Здесь пользователю необходимо будет ввести в текстовом поле, которое называется TextBox правильный номер вагона. Если он указан правильно, то
  UserForm3.Hide
  UserForm4.Show.
  Если неправильно - на экране появляется сообщение "Увы, это ошибка. Попробуйте еще раз" ( как обезпечить его вывод на экран, мы разберем позже ).
  UserForm4.
  Текст: "Вот и тринадцатый вагон. Проводник выпроваживает из купекомпанию развеселых артистов, представляя Вас как "товарища из необыкновенных услуг".
  - Зачем же так? - спрашиваете Вы.
  - Я и сам не знаю, зачем. Положено, - отвечает тот.
  - В таком случае принесите мне ..
  Если черный кофе, то
  UserForm4.Hide
  UserForm5.Show.
  Если черное кофе, то вновь появляется сообщение об ошибке.
  UserForm5.
  Текст: "Проводник с любезностью приносит Вам требуемый бодрящий напиток. После чашечки крепкого кофе на Вас нападает грусть. Вы смотрите в оконное стекло. За окнами быстро темнеет, а поезд все набирает ход. Внезапно на верхней полке, рядом с кармашком для вещей, Вы замечаете маленького человечка.
  - Иван Сергеевич, я к Вам по очень важному делу, - заявляет он.
  - Ко мне? А кто Вы такой?
  - Вагонный. Ну, про леших, домовых слышали? А я вагонный. У меня есть для Вас загадка. Какое из этих слов на стекле я написал неправильно?"
  - багряный,
  - платяной,
  - дровяной,
  - оловяный.
  Примечание. В первых трех случаях на этот раз выдается не сообщение об ошибке, а пользователь просто возвращается к первой форме через дополнительную, скажем так:
  UserForm5.Hide
  UserForm6.Show.
  UserForm6.
  Текст: "Увы, Вы ошиблись. Попробуйте ВСЕ СНАЧАЛА".
  UserForm6.Hide
  UserForm1.Show
  Так что ему волей-неволей приходиться начинать все заново. В случае правильного ответа следует команда -
  UserForm5.Hide
  UserForm7.Show.
  UserForm7.
  Примечание. Здесь настает пора рассказа герою о завязке всей сказочной истории.
  Текст: " - Ну что, я вижу, Вы серьезный молодой человек, - замечает вагонный, - да Бог с ней, с этой грамматикой. Расскажу лучше о нашей Алене - сотруднице института необыкновенных услуг.
  - А что с ней случилось?
  - Она заколдована.
  - То есть как?
  - Ну, например, это когда человека могут превратить, скажем.. в козла. Это всем известно и никому не интересно. А вот когда весну из сердца человека вынут, а зиму лютую туда поместят.. вот это и есть самое настоящее колдовство. Человек тогда другим становится. Он все понимает, но оценивает уже по-другому.
  - И кто же на такую пакость осмелился? - спрашиваете Вы.
  - Дело не в том, кто осмелился, а в том, как Алене помочь.
  - Нет, как раз в том и другом дело.
  - Не спорьте. А завтра - ничему в Китеж-граде не удивляйтесь и ничего не предпринимайте, заранее не посоветовавшись с товарищами Ковровым и Брылем Фомой Остапычем. С последним особенно".
  Так же пишется весь остальной сценарий. Пользователь отвечает на вопросы правильно - и продвигается дальше по его основному руслу. Если ответ неправильный, ему на это указывает автор программы - с помощью "бокса" ( о котором, как я обещал, мы расскажем дальше ) или с помощью дополнительной формы пользователя ( такой как UserForm6 ), которая переправляет пользователя в начало или на определенную форму, которая находиться раньше ( как правило, на четыре - восемь форм назад ).
  После того, как сценарий с его загадками и вопросами ( желательно - на одну тему, например, на тему русской орфографии ), а также вариатами ответов - "дорожками" готов, можно приступать к оформлению собственно игры в Microsoft Word.
  Раскройте приложение. Наведите курсор на любую панель инструментов и щелкните правой клавишей "мыши". На экране появиться меню, в котором нужно поставить галочки напротив строк "Visual Basic" и "Элементы управления" ( в нижней части списка ). На экране появяться соответствующие панели инструментов. Первой нас интересует панель "Элементов управления". На первой странице документа Word напишите название квеста, его жанр, автора, пожелания пользователю. После красочного оформления первой страницы можно создать на ней клавишу для запуска программы.
  В отделении "конструктора" рядом с верхним правом углом экрана подведите курсор к третьему значку во втором ряду ( с подсказкой "Кнопка" ). Нажмите на эту "кнопку". На странице должна появиться самая настоящая кнопка! С помощью курсора ее можно расширить до нужных размеров. После этого наведите нажмите правую клавишу "мыши" ( предватительно наведя курсор на кнопку ). В появившемся списке выберите "Свойства". Введите новую надпись на кпопке ( "Caption" ) - например, "Начать игру". Установите подходящий шрифт ( "Font" ) и цвет надписи ( "Fore Color" ). Закройте отделение "Свойств". Нажмите на правую клавишу "мыши" еще раз. Укажите на строку "Исходный текст". На экране появиться текст процедуры для кнопки такого вида:
  Private Sub CommandButton1_Click()
  
  End Sub
  Вставьте в пустую строку команду UserForm1.Show.
  После того, как кнопка готова, нажмите на первый значок в отделении "Элементы управления" - "Выход из режима конструктора". Закройте отделение "Элементы управления".
  Примечание. На первой странице документа можно создать и другие кнопки, ведущие, напр., к формам пользователя "Справка" и "Об авторе".
  Теперь можно сохранить первые результаты Вашей работы ( так же как обычный документ Microsoft Word - с помощью меню "Файл" ) и приступать к созданию форм пользователя и программного кода для них ( фрагменты которого уже есть в сценарии - см. выше ).
  В меню "Visual Basic" укажите на значок "Редактор Visual Basic" ( смотрите соотвествующую "всплывающую" подсказку ). Перед Вами окроется окно редактора. В нем есть верхнее меню - меню команд, окно проктов, окно свойств и окно программного кода. Наведите курсор на строку "This Document", нажмите правую клавишу "мыши", в списке выберите "Insert" - "UserForm" - вставить форму пользователя. На экране появится "UserForm1". Так же, как кнопку, ее можно расширять до пределов, которые установит Ваша фантазия с помощью "мыши" и окна "Свойства" ( "Properties" - появляется при нажатии правой клавиши "мыши" на форме и указания на соответствующую строку ).
  В "Свойствах" ( "Properties" ) указываем высоту ( "Height" ) и ширину ( "Width" ) формы, новую надпись для нее ( "Caption" ) помещаем, если есть желание, на нее рисунок ( "Picture" ), устанавливаем его положение в форме ( "Picture Alignmen" и "PictureSizeMode" ). Затем наступает пора поместить в форму текст, командные кнопки и, если необходимо, текстовой бокс для ввода информации пользователем ( того самого номера вагона, например ).
  Для того, чтобы вставить текст, сначала вставьте "поле текста" ( "Label" ). Для этого нажмите на значок с изображением молоточка ( если он серого цвета - кликните на форме пользователя и он станет "активным" ). В появившемся отделении с надписью "Toolbox" укажите на букву "А". Теперь наведите курсор на форму и нажмите левую клавишу "мыши". Перед Вами появится "лэйбл". Его свойства уставаливаются в том же порядке, как и свойства формы пользователя. Нажимаете на правую клавишу "мыши" - ну а далее по отработанной схеме. Особое внимание здесь, пожалуй, можно обратить на цвета. Цвет шрифта устанавливается в строке "ForeColor", цвет фона - в строке "BackColor", цвет рамки - в строке "BorderColor".
  После того, как свойства текста установлены, копируйте из сценария и вставляете в форму пользователя собственно текст.
  Примечание. Можно вставить в форму пользователя и отдельную картину. Для этого выберите в отделении "Toolbox" значок с горами и солнышком, затем нажмите на любом месте фомы. Появится заготовка для рисунка. Свойства рисунка устанавливаются так же, как свойства формы пользователя и свойства "лейбла" ( см. выше ). Рисунок можно выбрать, кликнув на маленькой кнопочке в строке "Picture", которая расположена в том же окне свойств заготовки рисунка.
  Теперь вставим командные кнопки, с помощью которых пользователь будет открывать другие формы ( "UserForm" ). И опять используется тот же "Toolbox" - панель инструментов, пятый значок во втором ряду - "CommandButton". Нажимаем, вставляем в форму, указываем свойства - цвет и шрифт. Все так же, как и в случае с "лейблом". Помещаем на кнопку соответствующую надпись, например, для командной кнопки "CommandButton1" - "Отказываетесь ехать, заявив таксисту "Нет у меня в Китеж-граже никакой невесты"", для командной кнопки "CommandButton2" - "Соглашаетесь отправиться в путь и выручить девушку". После того, как рисунки, кнопки и надписи размещены, и форма приняла приятный взору вид, нужно написать поцедуры выполнения для кнопок. Это не просто, а очень просто! Наводите курсор на кнопку, дважды кликаете по ней, открывается окно программного кода, где стоит уже услужливая надпись -
  Private Sub CommandButton1_Click()
  
  End Sub.
  Остается только вставить в пустую строку нужные команды. А где их взять? В сценарии! Помните, что мы писали при ответе номер 1 ( который соответствует кнопке номер 1 ) на поставленный впорос?
  UserForm1.Hide
  UserForm2.Show.
  Помещаем эти команды в процедуру, получается
  Private Sub CommandButton1_Click()
  UserForm1.Hide
  UserForm2.Show
  End Sub.
  Так же поступаем и со второй кнопкой. Правда, команды для нее будут уже другие - предусмотренные ответом номер два, а процедура будет выглядеть так:
  Private Sub CommandButton2_Click()
   UserForm1.Hide
  UserForm3.Show
  End Sub.
  То есть после нажатия первой кнопки откроется форма пользователя 2 - UserForm2, а после нажатия второй - форма пользователя 3 - UserForm3.
  Теперь можно Вас поздравить. Работа над первой формой пользователя завершена! "А как же обезпечить вывод на экран сообщений и реагирование программы на ответы в текстовых боксах, да и сами текстовые боксы в других формах пользователя как вывести на экран?" - спросите Вы меня.
  Первым делом объясним порядок размещения текстового бокса. В нашей сказке он появляется уже в форме пользователя номер 3 ( UserForm3 ). Для этого также используется Тoolbox. В отделении со значками нажимаем на третий значок - ab. Затем наводим указатель на форму и нажимаем левую клавишу "мыши". После нажатия на экране пояляется текстовое поле. Свойства его можно установить так же, как свойства формы и "лэйбла". "По умолчанию" цвет текстового поля - белый, а шрифт, который в нем набирается пользователем - tahoma, восьмой. Честно говоря, этого "маловато будет" для взыскательного пользователя. Поэтому не поленитесь и установите шрифт, скажем, сразу четырнадцатый и настройте "под него" размер текстового бокса ( с помощью "мышки" ). Также рекомендуется сменить цвет вводимого текста на Highlight.
  Для того, чтобы запрограммировать реагирование программы на ответ в текстовом боксе, создайте кнопку ( это делать Вы уже умеете ), и опишите в программном коде для нее необходимые параметры. Предположим, правильный ответ "13" ( номер вагона ). Тогда программный код к кнопке ( открывающийся, напомню, по двойному клику на нее, равно как и при нажатии на клавишу правого меню "View code" ) будет выглядеть следующим образом:
  
  Private Sub CommandButton1_Click() 'если нажата кнопка 1
  If TextBox1.Text = "13" Then 'если введенное пользователем число - 13
  UserForm3.Hide 'то форма 3 закрывается и
  UserForm4.Show 'форма 4 открывается
  ElseIf TextBox1.Text = "12" Or TextBox1.Text = "14" Then 'если введенное пользователем число - 12 или 14
  MsgBox "Вы совсем близко от цели! Попробуйте еще раз!" 'на экран выводится сообщение
  Else 'иначе
  MsgBox "Увы, это ошибка. Попробуйте еще раз" 'на экран выводится сообщение
  End If 'завершение условия
  End Sub 'завершение процедуры
  
  В приведенном образце написания процедуры для реагирования на введенные в текстовом поле данные п о с л е с и м в о л а ' идет пояснение автора этих строк. В программу его включать не надо, оно приведено для того, чтобы читателям журнала было понятно, о чем идет речь в этой процедуре.
  Из приведенного образца видно и то, каким образом выводятся на экран сообщения при неправильно или недостаточно точном ответе пользователя. Сообщение об ошибке может появиться, если Вы запрограммируете его как выводимое просто при нажатии на определенную кнопку, например:
  
  Private Sub CommandButton2_Click()
  MsgBox "Увы, это не тот ответ, который позволит Вам продолжить игру. Попробуйте еще разок"
  End Sub
  
  После появления на экране такого сообщения пользователь возвращается к той же форме, что и была, при этом получает возможность выбрать в ней другой ответ - другую кнопку.
  Итак, мы с Вами выяснили, как загружать - открывать и закрывать формы, как писать код для перехода от одной формы к другой, как заставить программу реагировать на вводимые пользователем с клавиатуры данные. Шаг за шагом таким вот образом Вы сможете составить собственный текстовый квест. На последней его странице не забудьте поместить клавишу "Выход" или "ВСЕ", которая закрывала бы последнюю форму. И написать для нее такой код ( если форма, например, номер 50 ):
  
  Private Sub CommandButton1_Click()
  UserForm50.Hide
  End Sub
  
  Теперь настает пора так называемой "отладки" программы - то есть выявления всех возможных ошибок, закравшихся в нее. Если Вы составили программу идеально, то можете этот абзац не читать. Для большинства же не лишне будет нажать клавишу F5 и посмотреть, как осуществляются переходы от одной формы к другой, как программа реагирует на данные, вводимые с клавиатуры. Если в программе есть ошибка, то на экране вместо Вашей формы появиться сообщение программы с кливишами "End" и "Debug". Нажмите вторую из них, чтобы посмотреть, в каком месте программы застопорилось ее выполнение. Чаще всего речь идет об орфографических ошибках и ошибках логических, например:
  а ) Вы забыли написать "End Sub" ( завершение вполнения процедуры ) или "End If" ( завершение выполнения условия ) в нужных местах,
  б ) Вы допустили орфографические ошибки, например,
   - написали User Form1 или UserForn1 вместо UserForm1,
   - вставили лишние пробелы в других местах, напр., TextBox1. Text вместо TextBox1.Text,
   - написали Shov вместо Show и так далее, и тому подобное.
  в ) Вы забыли закрыть какую-либо форму командой Hide.
  
  После приятного устранения всех ошибок программа украшается рисунками ( будьте осторожны - некоторые из них могут быть защищены авторским правом ), желательно авторскими, сохраняется ( так же как обычный документ - через "Файл" - "Сохранить как ... " ) и вот она уже готова предстать перед публикой.
  На диске "Бузовика" приведена, к слову сказать, игра, сделанная в VBA ( именно так называется тот язык программирования, на котором мы писали игру ), которая называется "Путешествие в Джоконду". Вы можете не только играть в нее, но и посмотреть, как она устроена. Для этого просто откройте редактор Visual Basic. В окне "проекты" Вы увидите список форм, сможете посмотреть каждую из них и код для каждой из них ( правая клавиша мыши - "Viev code" ). Надеемся, что знакомство с нашей игрой поможет понять Вам, что к чему в этом непростом деле - создании текстового квеста.
  Примечание. На первой странице документа укажите необходимые сведения для пользователя - "Для того, чтобы играть, не забудьте установить в меню "Сервис" - "Макросы" - "Безопасность" уровень безопасности "Средний". При открытии документа в этом случае на экране появится табличка, в которой нужно указать на среднюю кнопку в нижнем ряду - "не отключать макросы"".
  Создавате свои текстовые квесты, граждане! "Бузовик" с радостью их опубликует, если сюжет и тема их будут интересными для нас. Автору лучшего квеста положен приз - игра "Братья Пилоты: дело об огродных вредителях" от компании "1С".
  
  
  
 Ваша оценка:

Связаться с программистом сайта.

Новые книги авторов СИ, вышедшие из печати:
Э.Бланк "Пленница чужого мира" О.Копылова "Невеста звездного принца" А.Позин "Меч Тамерлана.Крестьянский сын,дворянская дочь"

Как попасть в этoт список
Сайт - "Художники" .. || .. Доска об'явлений "Книги"