Всем привет!
В целях подогреть интерес к теме VBS хочу поделиться с вами идеей написания игр, обучающих программ, графических опытов именно на VBS, или если назвать полным именем: Microsoft Visual Basic Script Edition.
Язык, созданный компанией Microsoft на основе языка Visual Basic( или если вам ближе QB, QBasic ), достаточно прост в изучении, не требует специальных инструментов и всегда находится под рукой.
В принципе, для написания простейшей программы понадобится только Блокнот (notepad.exe). Уверен, каждый сможет запустить его на своём компьютере!
Если всё же не приходилось этого делать, то нажмите сочетание клавиш Win + R , наберите в строке notepad.exe , нажмите кнопку "OK" вы увидите окно Блокнота.
[Ссылки могут видеть только зарегистрированные пользователи. ]
рис.1
Напечатайте в окне редактора следующий текст:
VB Code:
MsgBox "Привет! Я программа на VBS"
Сохраните в любое место этот файл с именем msg.vbs. Запустите на выполнение и вы увидите на экране окошко - стандартное сообщение Widows
[Ссылки могут видеть только зарегистрированные пользователи. ]
рис.2
Поздравляю! Вы написали программу на VBS. Если это ваша первая программа, и вы намерены написать свою первую настоящую игру, то вам придётся изучить кое-какие основы программирования на VBS, благо, информации о языке предостаточно. [Ссылки могут видеть только зарегистрированные пользователи. ]
Достаточно будет изучить основные конструкции : переменные, циклы, условные операторы. Или вникать по ходу дела.
И так, начнём. Что обычно делает любая игра? Как она выглядит? На заре компьютеризации, когда компьютеры были большие, игры были текстовые. Игра выглядела как набор повествований и вопросов , от ответов на которые зависел дальнейший ход событий и собственно исход игры. В то же время возникли псевдографические игры, это когда вы управляете какой либо буквой, и она стреляет в другую вражескую букву знаками препинания. По легенде буквы могли быть космическими кораблями, или воинами. Воображение рисовало красочные картины боя.
Теперь плохие новости. У VBS совершенно нет даже такой возможности. Он не умеет рисовать даже буквы в произвольном месте экрана. Всё, на что он способен, это вывести сообщение в окошке типа MsgBox принять строку в окошке InputBox. Если текстовую игру написать мы ещё сможем, например "Угадай число":
VB Code:
Randomize a= Rnd(1) 'переменной a присваивается случайное число от 0 до 1 a=Fix(a*10) 'переменной присваивается случайное число от 0 до 10 x=CInt(inputbox("Введите число ","Угадайте число от 0 до 10 за 3 попытки!!!")) If x>a Then Msgbox "Загаданное число меньше! ",vbSystemModal,"результат: " x=CInt(inputbox("Попытайтесь угадать ещё раз: ","Осталось всего 2 попытки!!!")) ElseIf x<a Then Msgbox "Загаданное число больше! ",vbSystemModal,"результат: " x=CInt(inputbox("Попытайтесь угадать ещё раз: ","Осталось всего 2 попытки!!!")) End If If x<a Then Msgbox "Загаданное число больше!",vbSystemModal,"результат: " x=CInt(inputbox("Попытайтесь угадать ещё раз: ","Осталась всего 1 попытка!!!")) ElseIf x>a Then Msgbox "Загаданное число меньше! ",vbSystemModal,"результат: " x=CInt(inputbox("Попытайтесь угадать ещё раз: ","Осталась всего 1 попытка!!!")) End If If x=a Then Msgbox "Вы угадали загаданное число!!! ",vbSystemModal,"результат: " Else Msgbox "Вам не удалось угадать загаданное число за 3 попытки!!! ", _ vbSystemModal,"результат: " End If
То стрелять буквами в буквы точно нет.
А тем более, мы собрались писать достаточно современные игры, с изображениями, музыкой и анимацией! Как быть? Обычно, даже те языки программирования, на которых серьёзные дядьки пишут настоящие программы и то не умеют ни чего такого. Для того, что бы они обрели такую возможность к ним подключают специальные библиотеки. Под Microsoft Windows для облегчения программирования игр существует DirectX. Это огромный набор API который содержит готовые классы, процедуры, функции, структуры и константы, существенно упрощающие процесс создания различного ПО, как 2D, так и 3D.
Нам с вами весь этот набор не нужен. Нам нужны основные операции. Тем более только 2D - загрузка изображений, вывод их на экран, вывод на экран текста, рисование примитивов- линий, кругов, прямоугольников, воспроизведение звуков и музыки, управление всем этим хозяйством при помощи мышки и клавиатуры. В общем, подобрать небольшую библиотеку, которая всё это умеет.
Вторая плохая новость. VBS не умеет работать с библиотеками. Штатными средствами ну ни как не подключить внешнюю DLL. И тут опять нашлись добрые люди, которые создали библиотеку dynwrap.dll - небольшой ActiveX, который может быть использован в любых средах, которые в состоянии выступить в роли OLE-клиента в административных скриптах Windows (.vbs и .js).
Библиотека обеспечивает подобие инструкции "Declare" в VBScript. Это позволяет вызывать произвольные функции из DLL-библиотек (например, win32 функции API).
Бинго! Мы подобрались к сути того, как это возможно на VBS свободно писать 2D игры, как на любом другом языке программирования!
Мы [Ссылки могут видеть только зарегистрированные пользователи. ], регистрируем в системе библиотеку с помощью regsvr32.exe.
Командная строка регистрации библиотеки может выглядеть, например, так:
Код :regsvr32.exe "C:\WINDOWS\system32\dynwrap.dll"
Далее скачиваем библиотеку для 2D игр:
[Ссылки могут видеть только зарегистрированные пользователи. ]
её регистрировать не надо, надо просто положить в папку с будущей игрой, подбираем нужные изображения, звуки, музыку, и пишем управляющий код на VBA.
Я уже написал несколько примеров игр, знакомых большинству людей, игравших в игры на компьютере, может игровом автомате, приставке или даже на старом телефоне.
И мы сними обязательно познакомимся, это змейка, пинг-понг, космическая стелялка, воздушный бой, крестики-нолики и т.п. .
А пока для того, что бы было чем заняться в ожидании прекрасного первая игра Пинг-Понг
[Ссылки могут видеть только зарегистрированные пользователи. ]
В архиве есть всё необходимое, библиотеки, изображения, звуки. Для работы не забудьте зарегистрировать файл dynwrap.dll. Делать это надо 1 раз, для удобства можно запустить файл regdynwrap.bat из архива. Для запуска игры запустите файл Pong.vbs