Как сделать любой скрипт

Часть 1. Создание десяти скриптов базового уровня

Как сделать любой скрипт

Серия контента:

Этот контент является частью # из серии # статей: 30 игровых скриптов, которые можно написать на языке PHP

Этот контент является частью серии: 30 игровых скриптов, которые можно написать на языке PHP

Следите за выходом новых статей этой серии.

Начало работы

В качестве гейммастера/ведущего и разработчика игр мне часто приходится писать небольшие утилиты и скрипты, которые помогают мне при руководстве играми, а также при планировании игр и при непосредственном участии в них. Иногда мне необходима быстрая подсказка. В другой раз мне может потребоваться большое количество имен для NPC-персонажей (Non-Player Character – персонаж, не управляемый игроком). Время от времени мне приходится работать с числами, подсчитывать некоторые шансы или интегрировать в игру те или иные головоломки. Реализация многих из этих задач существенно упрощается, если заблаговременно приложить определенные усилия к написанию соответствующего скрипта.

В этой статье анализируется 10 фундаментальных скриптов, которые могут применяться в играх различного типа. Прилагаемый к данной статье архив программного кода (далее – Архив) содержит полный исходный текст для каждого описываемого в ней скрипта. Кроме того, вы можете увидеть все эти скрипты «в действии» на Web-сайте: chaoticneutral.

Мы «пробежимся» по этим скриптам достаточно быстро. Такие темы как поиск хостинга или настройка сервера в данной статье рассматриваться не будут. Сегодня существует множество Web-хостов, которые предлагают PHP-дистрибутивы; в частности, инсталлятор XAMPP удобен в том случае, если вы хотите сформировать свою собственную среду. Мы не будем тратить много времени на разговоры о наилучших методиках PHP-разработки или о принципах проектирования игр. При создании рассматриваемых скриптов к ним предъявлялись несколько иные требования – эти скрипты должны были быть простыми для понимания, легкими в использовании и быстрыми в усвоении.

Базовый «кидатель кубика» (die roller)

Листинг 1. Использование функции с генератором случайных чисел mt_rand()

Далее, тип кубика, который мы собираемся кинуть, можно передать в эту функцию в виде параметра (листинг 2).

Листинг 2. Передача типа кубика как параметра

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

Генератор случайных имен

Если вам приходится руководить играми, сочинять сюжеты или одновременно создавать группу персонажей, то иногда у вас могут возникать трудности с придумыванием новых имен. Рассмотрим простой генератор случайных имен, который вы сможете использовать для решения этой задачи. Для начала создадим два простых массива — один с именами, другой с фамилиями (листинг 3).

Листинг 3. Два простых массива с именами и с фамилиями
Листинг 4. Перемешивание массивов имен и фамилий

Приняв эту базовую концепцию, мы сможем создавать текстовые файлы для хранения наших имен и фамилий. Если в каждую строку своего текстового файла мы помещаем по одному имени (фамилии), то мы сможем легко секционировать содержимое этого файла с помощью символов «разрыв строки» с целью последующего построения наших исходных массивов (листинг 5).

Листинг 5. Создание текстовых файлов для имен и фамилий

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

Генератор сценариев

Используя те же базовые принципы, на которых построен генератор имен, мы можем создать так называемый генератор сценариев. Такой генератор полезен в ролевых играх и в других ситуациях, где необходимо придумать псевдослучайный набор обстоятельств, который может использоваться для разыгрывания ролей, импровизации, написания сюжета и т.д. Одна из моих любимых игр, Paranoia, сопровождается пакетом GM Pack, в состав которого входит инструмент Mission Blender. Инструмент Mission Blender позволяет быстро скомпоновать полную миссию по результатам «кидания кубика». Давайте создадим свой собственный генератор сценариев.

Точно так же, как мы создавали текстовые файлы для наших имен и фамилий, начните с создания отдельного текстового файла для каждого аспекта – исходного положения, цели, противников и осложнений. Соответствующие эталонные файлы включены в Архив. После того как мы будем располагать этими файлами, код для генерации сценария будет выглядеть почти так же, как код для генерации имен/фамилий (листинг 6).

Листинг 6. Генерация сценария

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

Построитель карточной колоды и тасователь карточной колоды

Если вы играете в карточные игры и интересуетесь созданием соответствующих скриптов, мы можем соединить «построитель» карточной колоды со встроенным «тасователем» этой колоды. Для начала построим базовую колоду из стандартных игральных карт. Мы должны создать два массива, один из которых предназначен для хранения мастей, а второй – для хранения достоинств карт. Это обеспечит нам необходимую гибкость впоследствии, если мы захотим добавить другие масти или типы карт (листинг 7).

Листинг 7. Построение базовой карточной колоды

Теперь построим массив, который будет содержать все карты колоды. Мы можем сделать это достаточно просто – с использованием двух циклов foreach foreach (листинг 8).

Листинг 8. Построение массива карточной колоды

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

Листинг 9. Перемешивание карточной колоды и вытаскивание случайной карты

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

Калькулятор шансов: вытягивание карты

Поскольку мы построили карточную колоду определенным образом (а именно, с раздельным отслеживанием достоинства и масти для каждой карты), теперь мы можем программным способом использовать эту колоду для выполнения тех или иных операций, например, для вычисления шансов получения определенной карты. Начнем с комплектования двух рук по пяти карт в каждой (листинг 10).

Листинг 10. Комплектование двух рук по пяти карт в каждой
Листинг 11. Вычисление шансов на вытягивание определенной карты

Теперь мы можем выбрать карту, которую мы пытаемся вытянуть. Для упрощения этой задачи создадим массив, представляющий определенную карту. Таким образом мы можем искать любую нужную нам карту (листинг 12).

Листинг 12. Поиск определенной карты

Мы также можем искать карту с определенным достоинством или определенной масти (листинг 13).

Листинг 13. Поиск карты с определенным достоинством или определенной масти

Простой дилер для игры в покер

Теперь, когда у нас есть построитель карточной колоды и механизмы для определения шансов на вытягивание определенных карт, мы можем создать простого дилера (раздатчика карт), чтобы попрактиковаться в наборе руки. В этом примере мы построим дилера для варианта покера с пятью картами и заменой (так называемый Five Card Draw Poker). Дилер сдает игроку пять карт из колоды. Вы указываете, от каких карт хотите отказаться (по номеру карты), после чего дилер заменяет эти карты другими картами из колоды. В данном примере мы не будем устанавливать пределы на количество заменяемых карт или правила взаимоотношений между участниками игры, хотя для вас это может оказаться полезным упражнением.

Сгенерируйте и перетасуйте карточную колоду (как было описано в предыдущем разделе), после чего сформируйте одну руку из пяти карт. Отобразите эти карты по их индексу в массиве таким образом, чтобы можно было указать, какие карты требуется заменить. Для указания на заменяемые карты можно также использовать флажки (checkbox) (листинг 14).

Листинг 14. Использование флажков (checkbox) для указания на заменяемые карты
Листинг 15. Просмотр входного массива

С помощью этого скрипта вы сможете «набить руку» — намеренная игра слов — на оптимальные действия при определенных комбинациях карт.

Игра «Виселица»

Игра «Виселица» (или «Палач») – это, по существу, игра в отгадывание слов. Ведущий («палач») задумывает слово определенной длины, а игрок должен отгадать это слово, поочередно предлагая по одной букве (ограниченное число раз). Если игрок предложил букву, которая встречается в загаданном слове, то ведущий заполняет все местоположения этой буквы. После заданного количества неправильных догадок (как правило, шести), игрок проигрывает. Чтобы скомпоновать шаблон для игры в «Виселицу», мы сначала должны создать список слов. Сделаем этот список его в виде простого массива (листинг 16).

Листинг 16. Создание списка слов

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

Теперь, когда у нас есть список слов, мы должны выбрать одно из них по случайному закону, отобразить пустую позицию для каждой буквы этого слова и приступить к приему догадок. На всем протяжении игры мы должны отслеживать правильные и неправильные догадки. Мы решим эту задачу максимально просто – посредством сериализации массивов догадок и продвижения их вместе с каждой очередной догадкой. Если бы мы захотели воспрепятствовать мошенничеству посредством просмотра исходного текста страницы, то нам следовало бы сделать нечто более защищенное.

Создайте массив для хранения букв и правильных/неправильных догадок. Для правильных догадок мы будем заполнять массив буквами в качестве идентификаторов и точками в качестве значений (листинг 17).

Листинг 17. Построение массивов для хранения букв и догадок

Теперь нам нужно написать небольшой фрагмент программного кода для оценки догадок и демонстрации слова по ходу игры (листинг 18).

Листинг 18. Оценка догадок и демонстрация хода игры

В Архиве демонстрируется сериализация массивов догадок и их продвижение от догадки к догадке.

Помощник для разгадывания кроссвордов

Листинг 19. Прохождение по списку слов

При условии достаточно высокого качества нашего списка слов и достаточной точности наших догадок мы сможем получить приемлемый список слов для последующей проверки на возможные совпадения. После этого вам останется решить, какое из слов – «chest» (грудная клетка) и «cheat» (жульничество) – лучше подходит на роль слова из пяти букв, означающего «нарушение правил игры».

Механизм для игры Mad Libs

Mad Libs – это игра в слова, в которой игрок берет короткий рассказ и заменяет ключевые типы слов другими словами того же типа, чтобы создать новую, более глупую версию той же истории. Возьмем следующий текст: «I was walking in the park when I found a lake (Я шел по парку и нашел озеро). I jumped in and swallowed too much water (Я нырнул в озеро и проглотил слишком много воды). I had to go to the hospital (Мне пришлось пойти в больницу)». Начните заменять типы слов различными токенами. Начинайте и завершайте каждый токен подчеркиванием, чтобы предотвратить случайные совпадения строк (листинг 20).

Листинг 20. Замена типов слов символами слов

После этого создайте несколько списков базовых слов. В этом примере мы не будем давать большую волю своей фантазии (листинг 21).

Листинг 21. Создание нескольких списков базовых слов

Теперь мы можем многократно оценивать текст на предмет возможной замены токенов по мере необходимости (листинг 22).

Листинг 22. Оценка текста

Вполне очевидно, что это простой и достаточно сырой пример. Чем точнее будут наши списки слов и чем больше времени мы потратим на создание нашего базового текста, тем лучше будут наши результаты. Мы уже использовали текстовые файлы для создания списков имен и списков базовых слов. Используя тот же самый принцип, мы можем создавать списки слов, разбитые по типам, и использовать их для создания более разнообразных игр типа Mad Libs.

Механизм для игры в лото

Получение при игре в лото шести правильных номеров – это, мягко говоря, статистически маловероятный результат. Тем не менее, многие люди по-прежнему платят деньги, чтобы поиграть в эту игру. Если вам нравятся числа, то вас может заинтересовать наблюдение за тенденциями. Создадим скрипт, который будет отслеживать выигрышные номера и предоставит шесть реже всего выпадающих номеров в нашем списке.

(Отказ от ответственности. Этот скрипт не поможет вам выигрывать в лото, так что не тратьте деньги на билеты. Он предназначен исключительно для развлечения).

Мы сохраняем выигрышные номера в текстовом файле. Мы отделяем номера запятыми и помещаем каждый набор номеров на отдельную строку. Содержимое этого файла, разделенное на строки с помощью символов-разделителей строк, а в пределах каждой строки разделенное с помощью запятых, будет выглядеть примерно следующим образом (листинг 23).

Листинг 23. Сохранение выигрышных номеров лото в текстовом файле

Вполне очевидно, что этого недостаточно для выявления статистических закономерностей. С другой стороны, этого вполне достаточно для иллюстрации основных принципов.

Листинг 24. Прохождение по выпавшим значениям

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

Листинг 25. Сортировка чисел по частоте их выпадения

Регулярно добавляя в наш текстовый файл с выпавшими номерами очередные выпавшие номера, мы сможем оценить тенденцию выпадения номеров в долгосрочной перспективе и увидеть, как часто выпадают те или иные номера.

Заключение

Эта статья является полезным ресурсом для всех, кто хотел бы приступить к использованию языка PHP для обогащения своих игровых возможностей. Во второй статье серии под названием «30 игровых скриптов, которые можно написать на языке PHP» мы на базе описанного в этой статье кода создадим более совершенные скрипты, которые предоставят нам дополнительные возможности.

Ресурсы для скачивания

Похожие темы

Комментарии

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

Источник

Как написать скрипт: 9-ти шаговая схема создания скрипта с нуля

Как сделать любой скрипт

08 Ноя Как написать скрипт: 9-ти шаговая схема создания скрипта с нуля

Как написать скрипт продаж? Таким вопросом задается, наверное, каждый, кто работает в продажах. И это неудивительно — ведь хороший скрипт продаж позволит Вам быстрее и легче привлекать клиентов, поможет менеджерам преодолевать возражения и отвечать на вопросы потенциальных покупателей. Плюсы от использования скрипта очевидны.

Но есть и обратная сторона.

Разработка скрипта продаж — занятие не простое. В статье «3 способа написать и оформить скрипт продаж» я уже делился с Вами своим мнением по поводу подготовки скрипта (электронный формат, бумажный формат).

Сегодня я хочу предложить Вам схему создания скрипта — 9 шаговый алгоритм написания скрипта с нуля (речь идет про написание скрипта холодного звонка. Для других видов звонков алгоритм будет аналогичным с небольшими корректировками). Когда я создаю скрипты продаж для корпоративных клиентов, я сам опираюсь на этот алгоритм.

Я подготовил алгоритм в формате PDF. Скачать его можно бесплатно, разблокировав доступ через (нажать на любую кнопку соцсетей).

Более подробно каждый шаг я описал в этих видео:

Как написать скрипт продаж: шаг 1-5 (видео)

Давайте рассмотрим основные шаги при написании скрипта.

1. Начни с сегментации

Этот шаг (к сожалению, незнакомый большинству) позволяет на начальном этапе разделить базу наших потенциальных клиентов на более перспективных и интересных для нас и на менее интересных. На этом шаге важно определить критерии сегментации для своей ситуации. Например, если я продаю тренинги продаж, то для меня клиент с наличием отдела продаж в компании и необученными сотрудниками будет гораздо интереснее, чем клиент вообще без отдела продаж. Таким образом мы для себя выделяем категории клиентов А, B, C и далее по необходимости для Вашего бизнеса. Более подробно этот важный шаг я разбирал на онлайн-тренинг Скрипты продаж, которые выстреливают (здесь можно посмотреть отчет с тренинга), но думаю логика сегментации Вам понятна.

2. Определи целевое действие

На этом шаге важно спланировать для каждого сегмента клиентов те целевые действия, которые будут нам выгодны. Например, с клиентами категории А мы готовы встречаться на территории клиента (т.к. они наиболее перспективные, интересные для нас. Мы готовы инвестировать свое время в таких клиентов), а с клиентами категории С, к примеру, можно ограничиться подпиской на рассылку.

3. Определи ЛПР

ЛПР — лицо, принимающее решение. Кто в Вашем случае определяет решение о работе с Вами? Часто менеджеры напролом пробиваются к руководителю, не понимая, что решение по их вопросу в компании, вероятно принимает другой человек. Это важный шаг, который напрямую влияет на наполнение нашего скрипта эффективными речевыми оборотами.

4. Наполни таргет-лист

Таргет-лист — это список компаний для привлечения. Я рекомендую иметь небольшой список тех, кому Вы хотите позвонить уже в процессе составления скрипта.

5. Продумай выход на ЛПР

Что Вы скажете секретарю, чтобы он Вас соединил с руководителем. Мне обычно достаточно 2-3 техники чтобы обойти почти любого секретаря. В курсе 10 звонков — 10 продаж я о таких техниках рассказываю.

6. Определи идеальную линию разговора с ЛПР

Представьте, что Ваш разговор проходит идеально гладко. Клиент не возражает. Подумайте, с чего Вы начнете беседу, как утеплите контакт, как будете аргументировать свою позицию. Я обычно выделяю 4 составляющих в этом блоке, о которых расскажу в другой статье (техника «ВУУЗ»).

7. Добавь ветвистость

Скрипт продаж подразумевает разные варианты поведения клиентов. Он может согласиться с Вами сразу (в таком случае сработает Ваша идеальная линия разговора), либо будет отказывать и возражать. На 7 шаге важно предусмотреть возможные отказы и отговорки клиента. Я обычно выделяю возражения универсальные (они могут появиться на любом узле скрипта) и узловые (они могут появиться только на определенном узле. Например, во время установления контакта). Преодолеть любые возражения Вам поможет курс Хакер возражений. Там есть все необходимые приемы для обработки любых возражений.

8. Автоматизируй скрипт

На этом шаге я рекомендую автоматизировать скрипт продаж. Вы можете использовать заготовки для автоматизации (например, я использовал экселевский шаблон в курсе Конструктор скриптов продаж), либо специальные сервисы для автоматизации скриптов (мне нравится СкриптДизайнер).

9. Улучшай!

Следите за конверсией каждого узла, скрипта в целом, пробуйте разные ответы на возражения и способы аргументации. И у Вас получится убойный скрипт продаж!

Источник

Подробная инструкция по установке любого скрипта на любой хостинг

Как сделать любой скриптПервоначальные действия по установке практически любого скрипта на любой нормальный хостинг одинаковы: нужно создать базу данных, залить файлы скрипта на сервер, прилинковать домен. В этом посте будет приведена подробная инструкция по установке скрипта интернет магазина (или любой другой CMS) на хостинг BeGet. Этот хостинг подойдет как нельзя кстати: 30 дней бесплатного тестового доступа позволят вам вдоволь потренироваться.

Введение

Эта инструкция подойдет практическидля любого хостинга. Так как панели управления всех хостингов схожи. Возможны различия в названиях пунктов меню и в диалогах. Но я думаю вы разберётесь: все хостинги выполняют одну функцию и смена названий не меняет общий смысл.

Весь список рекомендуемых нами хостинг-провайдеров можете посмотреть в разделе Хостинг нашего сайта. А в этой статье вы сможете подобрать бесплатный хостинг, а так же хостинг с длительным бесплатным тестовым аккаунтом.

Итак, вы зарегистрировались на хостинге, вы скачали дистрибутив со скриптом. Давайте осмыслим что мы будем делать дальше. Скрипт это набор папок и файлов. В этих файлах содержится инструкции по управлению сайтом. А что же есть сайт — это набор данных: текста, картинок, товаров, производителей. Для хранения этих данных скрипт будет использовать базу данных. Чаще всего MySQL. Значит перед тем как установить скрипт нам нужно на хостинге создать базу данных, а скрипту сообщить параметры доступа к этой базе. Это делается один раз при установке. Сайт также должен иметь уникальное имя: доменное имя. Это имя привязывается к папке со скриптом.

Получается, что сайт физически это папка со скриптом, который имеет доступ к базе данных, для хранения всей информации. К этой папке можно прилинковать любое доменное имя. Отсюда хронология наших действий будет такая:

Зарегистрироваться на хостинге я думаю не составит труда: выбираем тариф Старт (впринципе не важно какой, если станет тесно — в любой момент можно сменить тариф), вводим в форме своё имя и E-mail и ждём письма, в котором будут указаны пароли для доступа на хостинг. После регистрации у вас есть 30 дней на попробовать, если не захотите пользоваться хостингом, то через 30 дней ваш аккаунт и сайты просто будут удалены.

После регистрации и входа на хостинг видим Панель управления (ПУ) хостингом:

Как сделать любой скрипт

Панель управления хостинга Beget

Создаём на хостинге базу данных

Для того что бы создать базу данных на хостинге нужно в ПУ кликнуть на пиктограмме MySQL. В результате откроется панель управления базами данных:

Как сделать любой скрипт

Создание базы данных на хостинге

Сдесь мы указываем имя базы данны и пароль. Жмём кнопку Создать. База данных создана. Нам остаётся только запомнить введённые данные. Мы их и будем передавать скрипту при установке. Замечаем что перед именем базы данных есть префикс и именем базы будет считаться то имя которое получается в результате склейки этого префикса и того имени которое вы ввели. В дальнейшем при установке скрипта нужно будет ввести: имя базы данных, имя пользователя, пароль. Имя пользователя на этом хостинге не вводится — оно совпадает с именем базы данных.

Создаём сайт (директорию для сайта) и прилинковываем доменное имя

Для того что бы закачать файлы скрипта на хостинг нам нужно создать под сайт отдельную папку: ведь на хостинге может быть расположено несколько сайтов — файлы каждого должены располагаться в отдельной директории. При создании аккаунта на хостинге автоматически создаётся одна папка: public_html. В неё и будем заливать скрипт. Если в дальнейшем понадобится создать второй сайт то используем пункт Сайты в ПУ:

Как сделать любой скрипт

Создание директории для сайта

Для того что бы создать сайт (директорию) указываем имя и жмём кнопку создать.
Ничего сложного. В дальнейшем созданную директорию увидим в файловом менеджере при загрузке файлов скрипта на хостинг. Так же в этом пункте панели управления можно прилинковать (прикрепить) одно из имеющихся доменных имен к директории сайта. В нашем случае к директории public_html должно быть прилинковано бесплатное доменное имя третьего уровня вида НазваниеАккаунта.bget.ru. Его мы плучаем при создании аккаунта. В дальнейшем к уже созданному сайту можно прилинковать нормальное доменное имя второго уровня.

Закачиваем файлы скрипта на хостинг

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

Что бы использовать файловый менеджер ПУ заходим в соответствующий раздел. В отдельном окне откроется файловый менеджер:

Как сделать любой скрипт

Файловый менеджер хостинга BeGet

В файловом менеджере открываем одинарным сщелчком папку public_html. Там видим файл index.html, его нужно удалить. Затем жмём на кнопочку Закачать. Откроется стандартное окно выбора файла. Выбираем архив со скриптом и закачиваем на хостинг. Важно закачивать именно архив, а не папку с файлами — это намного быстрее. Архив после закачки нужно разорхивировать, после этого удалить сам файл архива.

Установка скрипта на хостинг

Что бы началась установка нужно в браузере ввести адрес вашего сайта: доменное имя в данный момент прилинкованное к сайту. У нас это рабочее имя 3 уровня полученное при регистрации: ИмяАккаунта.bget.ru.

В процессе установки вы введёте имя базы данных, имя пользователя и пароль к базе данных, полученные ранее.

Дальнейший ход установки интернет магазинов описан в соответсвующих постах:

[Робот подобрал для вас похожие посты:]

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *