Notepad как сделать игру

Добавил пользователь Владимир З.
Обновлено: 18.09.2024

Базовые возможности программы, заявлены на официальном сайте программы:

Подсветка синтаксиса
Сворачивание кода
Автодополнение и автоматическое закрытие скобок и тэгов (если активировано)
Закладки
Регулярные выражения для поиска и замены
Запись и воспроизведение макросов
Сравнение файлов
Менеджер проектов
Карта документа
Переопределение любых горячих клавиш
Резервное копирование сохраняемых файлов (включается в настройках)
Трансформация текста при помощи подключённого плагина TextFX
Поддержка и конвертирование кодировок ANSI, UTF-8 и UCS-2
Блоковое выделение текста, одновременное выделение нескольких разных мест (с Ctrl )
Мультистрочное редактирование (с использованием Alt )

При установке дополнительных плагинов

Шаблоны текста (сниппеты), вводимые с помощью сокращений (плагин SnippetPlus)
FTP-менеджер (плагины: NppFTP)
HEX-редактор
Авто-сохранение (при потере фокуса; через настраиваемый промежуток времени)
Проверка орфографии (с использованием GNU Aspell)
Мощное симметричное и асимметричное шифрование текста (при установке плагина NppDarkCrypt)
Поддержка Zen Coding
Поддержка автоматизации с помощью скриптов : Python, JScript, Lua, и других.

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

Я создал игру And yet it hurt (вероятно, автор хотел сказать it hurts, но мог использовать неправильный вариант намеренно, — прим.).

Проект можно скачать тут, а код посмотреть на Github.

Обычно вы жмете на кнопку, и в игре что-то происходит. Жмете А, и Марио прыгает. Все завязано на получении информации и отклике. Игра получает входные данные и выводит свои.

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

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

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

Альтернатива

Пришлось искать другой текстовый редактор. Единственным требованием было — автоматическое обновление файла. Хотя чуть позже вы увидите, что я использовал еще одну фичу.

Сначала на ум пришли Notepad++ и Sublime Text. Но они совсем не похожи на Блокнот внешне, очарование проекта развеялось бы окончательно. Плюс, они спрашивают игрока, хотел бы он обновить файл. Это куда лучше, чем закрывать и открывать файл, но все равно отвлекает от геймплея. Я хотел, чтобы файл обновлялся автоматически. Тогда мне на глаза попался Notepad2. Он был почти идеален.

Редактор можно настроить, чтобы он был похож на MS Блокнот, а главное — он проверяет изменения, внесенные в файл. Но также как Notepad++ и Sublime Text, Notepad2 спрашивает игрока, нужно ли изменить файл. К счастью, у редактора открытый код, и я мог отполировать его до совершенства.


Notepad2 написан на C. Я немного знаком с этим языком, пусть меня и нельзя назвать экспертом. Опытный программист Javascript сможет прочитать и уловить общую суть кода, но понять исходный код Notepad2, чтобы внести необходимые изменения, оказалось не так просто.


на TRUE, и программа начала автоматически обновлять файл. Таким образом, я создал рендер на базе ASCII. Осталось создать подходящий движок.

Отрисовка

Игра создана с любовью: LÖVE — фреймворк с открытым исходным кодом для 2D-игр, написанных на Lua. Я много лет пользовался этой платформой и даже собрал туториал. Для этого проекта в основном использовался LÖVE-модуль файловой системы, потому что он предоставляет все необходимые возможности. Обычно с помощью LÖVE создают изображение, которое затем выводится на экран.

Мне нужно было почти то же самое: вывод ASCII-арта в текстовом файле. Я начал с домика и птички, причем птичка должна была лететь через файл. Взял арт, который нашел на ASCII Art, но в игре используются только оригинальные работы (за исключением шрифтов).



Загрузка арта — это просто чтение файла.


Я хотел, чтобы с птичкой можно было работать в таком ключе:


х — номер столбца, y — номер строки. Поэтому разбил экран и птицу на списки строк.


С птицей сделал то же самое. Теперь код, описывающий птицу, должен был перекрывать код про дом. Вот, что мне было нужно:

  1. Найти строку, в которой должна быть отрисована птица.
  2. Вывести всю строку до x.
  3. Вывести оставшуюся часть строки, начиная с x + длина арта с птицей.
  4. Создать новую строку с первой частью, птицей и оставшейся частью.
  5. Повторить то же самое для всех остальных строк.


Стало намного лучше:

Анимация

Я начал добавлять больше фишек, например, анимацию:

Все кадры расположены в одном файле и разделены тегом >. Тег определяется при чтении и позволяет задать последовательность кадров. Благодаря этому мы получаем классическую анимацию. Создаем таймер и отрисовываем кадры в соответствии с ним.


Также я реализовал вывод печатаемого текста и отобразил отдельно экран, инвентарь и окно для ввода решения. Оставалась одна проблема. Как игра узнает, что был открыт файл? Это и есть вторая фича, о которой я говорил ранее.

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


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

За девять дней разработки (судя по дате создания gif-файлов) я сделал это:

Если вы запускали игру, то знаете, что в ней нет печатаемого текста и анимации. На то было несколько причин:

  • Я опасался, что порчу свой HDD/SSD постоянной перезаписью файла. Тестирование игры с этими функциями сделало из меня параноика. Не хочу, чтобы игроки испытывали это чувство.
  • Вы не можете ничего делать во время анимации. Если вы попытаетесь выбрать ответ и напечатаете символ в окошке, вы не успеете сохраниться до того, как следующий кадр загрузится и удалит ваш символ. Так что поначалу анимации кажутся классными, но в итоге только мешают.
  • Анимация — это здорово, но она не вписывается в стиль Блокнота. В текстовых файлах не должно быть анимации. По той же причине в игре нет музыки. Конечно, я мог сделать так, чтобы игра создавала аудио-файл, который вы открыли бы в медиаплеере. Но такие действия отвлекали бы от Блокнота. Я оставил несколько анимаций, чтобы показать, как круто они выглядят. Плюс, во время сражения врага лучше бить, когда он моргает, — хороший сигнал к действию.

Программа по умолчанию

Меня бесило, что пользователю приходилось перетаскивать файл в окно Notepad2 для запуска игры. При двойном щелчке по файлу, открывался Блокнот или другая программа по умолчанию для чтения .txt. Можно было прописать команду, которая меняла приложение для таких файлов на Notepad2, но лично мне не понравится, если какая-то игра проделает такой финт на моем компьютере.

Может, возвращать исходные настройки при закрытии игры? Это возможно, но возникнет проблема, если игра вылетит или неожиданно закроется.


Программу по умолчанию можно назначить только от имени администратора. Если вы открываете игру под другой учетной записью, будут использоваться txt-файлы. Если вы открываете файл в обычном Блокноте, игра сообщит, что нужно перетащить файл в открытое окно Блокнота. Либо запустить ее от имени администратора, чтобы она открылась по дабл-клику.

Мотивация

На самом деле всё было сделано три года назад. Что я делал все остальное время? Классический пример отсутствия мотивации.

Изначально сюжет был немного длиннее, чем сейчас. Твоих родителей убил дракон, ты должен пойти к кузнецу Фердану, чтобы он выковал меч. Задумывалось, что меч делается из трех материалов, которые нужно собрать. Это сильно увеличивало объем игры и отодвигало конец разработки. Игра получалась не очень-то развлекательной, и я забросил проект через два месяца.

Но я все время держал его в голове. Я отладил целый фреймворк, который позволял создать игру в Блокноте, а проект не двигался с мертвой точки. Нужно было доделать его. В 2019 году я не завершил почти ни одного проекта. Разочарование подтолкнуло меня к решению: закончить незаконченное в 2020-м.

И вот она. Я сократил сюжет, дал себе месяц на все (получилось на неделю дольше) и бросился в бой. Еще подал заявку на A MAZE. Awards, соответственно, дедлайн был назначен на 2 февраля. Так появилась мотивация.

Заключение

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

Что дальше? Игра в Paint? Игра в Калькуляторе? Вряд ли я их сделаю. Но мне нравится думать об играх, которые используют нетрадиционные платформы.

Я слышал, что в Notepad++ есть опция автозаполнения, но я не могу найти в Интернете какую-либо документацию, которая бы помогла вам создать собственную или как это сделать. Я хотел бы определить слова для автозаполнения. например, каждый раз, когда я пишу "собака", я хотел бы, чтобы блокнот предлагал мне дополнить это слово словами "собака и кошка". Если кто-то может указать мне правильное направление (или прямо сказать, что это всегда приятно), я бы действительно ценю это!

Спасибо, если можете!

1 ответ 1

Вы можете найти настройки, следуя ниже:

В notepadd++ также есть вики, посвященная автозаполнению.

Файлы автозаполнения находятся в папке plugins\APIs , которая находится в папке установки Notepad++, чаще всего C:\Program Files\Notepad++

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

Основной набор символов, используемый для распознавания ключевых слов, состоит из букв az, AZ, 0-9 цифр и подчеркивания. В будущем выпуске Notepad++ вы сможете добавить больше символов (вероятным кандидатом является точка), указав в среде параметр AdditionalWordChars. Значением будет строка со всеми дополнительными параметрами без разделителей. Тем не менее, этот дополнительныйWordChars по-прежнему не работает (Notepad++ v.6.5.2)!


Базовые настройки

настройки Notepad

Настройка функций в редакторе Notepad

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

настройки Notepad

Дополнительная информация! Более того, можно не только изменить размер иконок, но и скрыть их вовсе с панели управления.

Настройка функций в редакторе Notepad

настройки Notepad

настройки Notepad

настройки Notepad

Также в этом месте можно подобрать синтаксис по умолчанию. Например, HTML подойдет языку веб-разметки, а Perl будет соответствовать языку программирования.

настройки Notepad

Настройка функций в редакторе Notepad

Настройка функций в редакторе Notepad

Настройка функций в редакторе Notepad

Настройка функций в редакторе Notepad

Настройка функций в редакторе Notepad

Настройка функций в редакторе Notepad

Настройка функций в редакторе Notepad

Настройка функций в редакторе Notepad

Обратите внимание! Все изменения вступают в силу после перезапуска редактора.

Настройка функций в редакторе Notepad

Настройка функций в редакторе Notepad

Настройка функций в редакторе Notepad

Настройка функций в редакторе Notepad

Настройка функций в редакторе Notepad

Дополнительные настройки

настройки Notepad

настройки Notepad

Как только перейдете в вышеуказанный пункт, откроется файл, который отвечает за содержание контекстного меню. Его можно изменять прямо в этом файле, с помощью языка разметки.

настройки Notepad

настройки Notepad

Настройки плагинов

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

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

Заключение

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

Большинство похожих скриптов пишутся для удобства

С этой статьей вы не научитесь программировать и даже не напишите как таковую программу, но найдете здесь отличные VBS скрипты и BAT файлы, которые без проблем напишете в обычном блокноте Windows, сможете усовершенствовать по своему, потом похвастаться перед друзьями и близкими. Возможно это поднимет вам настроение и вы отлично проведете время.

Данных расширений (vbs, bat) файлы создаются во всеми известном Блокноте Windows (Notepad). Для большего удобства создания скриптов рекомендуется использовать усовершенствованный (скажем так) блокнот — Notepad++. Он удобен подсветкой синтаксиса большого количества языков программирования, если вам это мало о чем говорит, то скачайте и пишите в нем — ошибок сделаете меньше в коде, ну или будет их проще найти, чем в том же мало функциональном Блокноте Windows.

Для наглядности пример (слева — Блокнот Windows, справа — Notepad++):

Приступим

Приступим

Если вы уже знакомы с VBS скриптами и батниками, то скорее всего нижеследующие примеры вам будут неинтересны, если же вы новичок, то для первоначального ознакомления — то, что нужно.

Научим компьютер здороваться

  1. Открываем Блокнот (или Notepad Plus Plus).
  2. Копируем в вставляем код:

Читать еще: Как сделать пузырьковую диаграмму в excel

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

Все просто, программу (скрипт) добавить в автозагрузку можно таким же образом, то есть через такой же VBS скрипт. Создаем файл в блокноте, копируем/вставляем (Ctrl+C/Ctrl+V) следующий код:

Открыть дисковод

Есть более интересная модификация данного скрипта:

В данном случае будет все время открываться-закрываться CD/DVD-привод, на ноутбуках в этом случае будет открываться после каждого его закрытия.

Внимание! Второй код (открытие-закрытие дисковода), некоторые антивирусы видят как вредоносную программу. Антивирус Касперского (в т.ч. и Kaspersky Free) его видит именно так и уничтожает сразу же. В первом же случае (просто открытие дисковода) для антивирусных программ не является вредоносным скриптом.

Чтобы прекратить автоматически открывать-закрывать дисковод необходимо:

Игра

Интересная находка из Сети — игра на VBS. Необходимо угадать число от 0 до 100. Скрипт автоматически при запуске задает (разгадывает) число, которое вам необходимо угадать и ввести в специальном окошке, при неправильном ответе даются подсказки, например меньше или больше.

Ну и перед тем как переходить к батникам (.BAT) воспользуемся самым полезным VBS скриптом из всех перечисленных в этой статье.

Скрипт закрывающий wscript.exe

По сути он делает тоже самое, что чуть выше объяснялось в диспетчере задач, как например нельзя просто взять и закрыть надоедливый скрипт открывающий-закрывающий дисковод, а запустив данный скрипт все запущенные будут закрыты. Это как клин клином вышибают.

Немного познакомились с VBS скриптами и о том как их писать в блокноте, теперь рассмотрим несколько примеров использования BAT файлов (далее — батник).

Завершение работы /Перезагрузка компьютера

Совсем простой батник состоящий всего из одной строки.

  1. Открываем Блокнот.
  2. Пишем следующий код:

shutdown -s -t 1 -c -f

Читать еще: Как сделать шкатулку для денег

Есть такой вариант кода:

shutdown -r -t 1 -c -f

Все также, прописываем в блокноте, сохраняем с расширением .bat и после запуска компьютер перезагрузится (обычная перезагрузка компьютера).

Удаление обновлений

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

@echo echo echo Step 1: Delete Updates Telemetry wusa /uninstall /kb:3068708 /quiet /norestart wusa /uninstall /kb:3022345 /quiet /norestart wusa /uninstall /kb:3075249 /quiet /norestart wusa /uninstall /kb:3080149 /quiet /norestart

Таким образом можно удалить абсолютно любое обновление, даже назойливое KB971033 которое проверяет копию Windows 7 на подлинность.

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

Тёмная тема, язык и подготовка к работе

При открытии Twine выглядит примерно так. У вас, скорее всего, он будет светлым.

По умолчанию Twine включает светлую тему

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

Чтобы выбрать русификацию или адаптацию под другой язык, нажмите на кнопку Language и выбирайте. Есть украинский, китайский, испанский… всего 20 локализаций. Это влияет только на внешний вид самого редактора, текстовая игра будет на том языке, на котором вы будете набирать текст, что видно на скриншоте.

Внимание: каждая локализация хранит свои текстовые игры в отдельной папке, поэтому если вы начали писать проект под одним языком, а затем решили включить в Twine какой-то другой — не пугайтесь тому, что ваши игры исчезли. Это поведение характерно для последней версии (2.3.5), по которой написана статья. В будущем, возможно, это исправят.

​Stories и Истории — исходники для разных локализаций Twine (не игр!) лежат в разных папках

Мне кажется, это всё, что надо знать по подготовке. Включите тёмную или светлую тему, выберите язык и начинайте эксперимент.

Видео

Как добавить переход к другой локации

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

[[Облизать муравьиную тропу]]

Как только вы это сделаете, Twine тут же создаст второй параграф с этим именем. А если такой параграф уже есть, просто соединит их переходами.

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

[[Текст выбора|название параграфа, куда идти]]

[[Облизать муравьиную тропу|ants]]

Жмите на крестик в верхнем углу и закрывайте параграф. Теперь в редакторе лежит несколько узлов будущей игры. Их можно перетаскивать как угодно.

Чтобы удалить неудачный или лишний параграф, используйте клавишу Delete или иконку с корзиной из всплывающего меню, которое появляется при наведении мышки на параграф.

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

Читайте также: