Вниз  Программирование 2D игр с использованием скриптового языка VBS
- 17.01.2020 / 12:06
Pro_grammer
  Пользователь

Pro_grammer 
Сейчас: Offline
Всем привет!
Уверен, многие знакомы с VBS, но не многие знают, что на этом языке можно не только управляющие скрипты писать, но и полноценные 2D игры.
Язык, созданный компанией Microsoft на основе языка Visual Basic( или если вам ближе QB, QBasic ), достаточно прост в изучении, не требует специальных инструментов и всегда находится под рукой.
Т.е. любой файл, который имеет расширение ".vbs" система попытается интерпретировать в машинные команды и выполнить.
В принципе, для написания простейшей программы понадобится только Блокнот (notepad.exe). Уверен, каждый сможет запустить его на своём компьютере!
Если всё же не приходилось этого делать, то нажмите сочетание клавиш Win + R , наберите в строке notepad.exe , нажмите кнопку "OK" вы увидите окно Блокнота.
Напечатайте в окне редактора следующий текст:

  1. MsgBox "Привет! Я программа на VBS"

Сохраните в любое место этот файл с именем msg.vbs. Запустите на выполнение и вы увидите на экране окошко - стандартное сообщение Widows

Поздравляю! Вы написали программу на VBS. Если это ваша первая программа, и вы намерены написать свою первую настоящую игру, то вам придётся изучить кое-какие основы программирования на VBS, благо, информации о языке предостаточно. http://scriptcoding.ru/category/vbscript-znakomstvo/page/2/
Достаточно будет изучить основные конструкции : переменные, циклы, условные операторы. Или вникать по ходу дела.
И так, начнём. Что обычно делает любая игра? Как она выглядит? На заре компьютеризации, когда компьютеры были большие, игры были текстовые. Игра выглядела как набор повествований и вопросов , от ответов на которые зависел дальнейший ход событий и собственно исход игры. В то же время возникли псевдографические игры, это когда вы управляете какой либо буквой, и она стреляет в другую вражескую букву знаками препинания. По легенде буквы могли быть космическими кораблями, или воинами. Воображение рисовало красочные картины боя.
Теперь плохие новости. У VBS совершенно нет даже такой возможности. Он не умеет рисовать даже буквы в произвольном месте экрана. Всё, на что он способен, это вывести сообщение в окошке типа MsgBox принять строку в окошке InputBox. Текстовую игру написать мы ещё сможем, например "Угадай число":

  1. Randomize
  2. a= Rnd(1) 'переменной a присваивается случайное число от 0 до 1
  3. a=Fix(a*10) 'переменной присваивается случайное число от 0 до 10
  4. x=CInt(inputbox("Введите число ","Угадайте число от 0 до 10 за 3 попытки!!!"))
  5. If x>a  Then
  6.         Msgbox "Загаданное число меньше! ",vbSystemModal,"результат: "
  7.         x=CInt(inputbox("Попытайтесь угадать ещё раз: ","Осталось всего 2 попытки!!!"))
  8.   ElseIf x<a Then
  9.         Msgbox "Загаданное число больше! ",vbSystemModal,"результат: "
  10.         x=CInt(inputbox("Попытайтесь угадать ещё раз: ","Осталось всего 2 попытки!!!"))
  11.  End If
  12. If  x<a  Then
  13.           Msgbox "Загаданное число больше!",vbSystemModal,"результат: "
  14.           x=CInt(inputbox("Попытайтесь угадать ещё раз: ","Осталась всего 1 попытка!!!"))
  15.   ElseIf x>a Then
  16.         Msgbox "Загаданное число меньше! ",vbSystemModal,"результат: "
  17.         x=CInt(inputbox("Попытайтесь угадать ещё раз: ","Осталась всего 1 попытка!!!"))
  18.  End If
  19. If x=a  Then
  20.          Msgbox "Вы угадали загаданное число!!!  ",vbSystemModal,"результат: "
  21.   Else
  22.          Msgbox "Вам не удалось угадать загаданное число за 3 попытки!!! ", _
  23. vbSystemModal,"результат: "
  24. End If

  То стрелять буквами в буквы точно нет.
  А тем более, мы собрались писать достаточно современные игры, с изображениями, музыкой и анимацией! Как быть? Обычно, даже те языки программирования, на которых серьёзные дядьки пишут настоящие программы и то не умеют ни чего такого. Для того, что бы они обрели такую возможность к ним подключают специальные библиотеки. Под Microsoft Windows для облегчения программирования игр существует DirectX. Это огромный набор API который содержит готовые классы, процедуры, функции, структуры и константы, существенно упрощающие процесс создания различного ПО, как 2D, так и 3D.
  Нам с вами весь этот набор не нужен. Нам нужны основные операции. Тем более только 2D - загрузка изображений, вывод их на экран, вывод на экран текста, рисование примитивов- линий, кругов, прямоугольников, воспроизведение звуков и музыки, управление всем этим хозяйством при помощи мышки и клавиатуры. В общем подобрать небольшую библиотеку, которая всё это умеет.
  Вторая плохая новость. VBS не умеет работать с библиотеками. Штатными средствами ну ни как не подключить внешнюю DLL. И тут опять нашлись добрые люди, которые создали библиотеку dynwrap.dll - небольшой ActiveX, который может быть использован в любых средах, которые в состоянии выступить в роли OLE-клиента в административных скриптах Windows (.vbs и .js).
  Описание и библиотеку можно посмотреть тут http://script-coding.com/dynwrap.html
  Библиотека обеспечивает подобие инструкции "Declare" в VBScript. Это позволяет вызывать произвольные функции из DLL-библиотек (например, win32 функции API).
  Бинго! Мы подобрались к сути того, как это возможно на VBS свободно писать 2D игры, как на любом другом языке программирования!
  Мы скачиваем dynwrap.dll (она есть уже в папке с игрой, её не обязательно скачивать отдельно) Регистрируем в системе библиотеку с помощью regsvr32.exe.
  Командная строка регистрации библиотеки (файл регистрации BAT есть в папке с игрой ) может выглядеть, например, так:
   regsvr32.exe "C:\WINDOWS\system32\dynwrap.dll"
  Далее подключаем к коду на VBS библиотеку для 2D игр (она есть уже в папке с игрой, её не надо скачивать отдельно), её регистрировать не надо, надо просто положить в папку с будущей игрой, подбираем нужные изображения, звуки, музыку, и пишем управляющий код на VBS. Синтаксис стандартный BASIC микрософт.
Открыть спойлер

  Список функций игровой библиотеки указаны в комментариях при декларировании этой библиотеки.
Скачивайте архив, распаковывайте в папку, к которой имеете доступ (касается систем, где не вы хозяин, а она решает, что и где вам разрешить), регистрируйте dynwrap.dll запустив regdynwrap.bat (возможно от админа!) и после чего запускайте сам файл Pong.vbs.
Если тема понравится, то опубликую ещё несколько игр, типа космической стрелялки, автогонки, воздушный бой и т.п.

Изменено Витаминыч (17.01 / 19:25) (всего 1 раз)


Прикрепленные файлы:
VB_pong.zip (152.94 кб.) Скачано 162 раза
screen.jpg (23.06 кб.) Скачано 166 раз
screen1.jpg (57.98 кб.) Скачано 121 раз
scrin.jpg (135.33 кб.) Скачано 131 раз
- 17.01.2020 / 13:22
HoldFast
  Пользователь

HoldFast 
Сейчас: Offline
Господи сын..
Но прикольно однозначно. Тупа лике
__________________
 Да, детка, я - Король Ящериц!!!
- 17.01.2020 / 18:24
Витаминыч
  Супермодератор

Витаминыч 
Сейчас: Offline
Прикольно. Прикольнее только в экселе делать игры :gg:
__________________
 わからない!!
- 17.01.2020 / 19:09
MasterOS
  Пользователь

MasterOS 
Сейчас: Offline
Ну ты попробуй сделать кое-что 3д проект на ексел :gg:
__________________
 Что? Где? Когда?
- 17.01.2020 / 19:22
Витаминыч
  Супермодератор

Витаминыч 
Сейчас: Offline
MasterOS, уже написал - https://habr.com/ru/post/348704/
__________________
 わからない!!
- 17.01.2020 / 20:17
MasterOS
  Пользователь

MasterOS 
Сейчас: Offline
Витаминыч, Ты чёртого геный
__________________
 Что? Где? Когда?
- 31.01.2020 / 22:14
Vladimir1982
  Пользователь

Vladimir1982 
Сейчас: Offline
Pro_grammer, Прикольно!
Наверх  Всего сообщений: 7
Фильтровать сообщения
Поиск по теме
Файлы топика (4)