BGT — Отойдём от теории.

Скрипт наш не будет ни чем, ни игрой, ни программой, просто интерактивным примером.
Концепция скрипта такова:
У нас есть любимая музыка. Запустив скрипт, мы нажимаем стрелку вверх — музыка начинает играть.
Нажимаем стрелку вниз — музыка останавливается.
Конечно в предыдущих статьях я рассказывал, как работать с файлами bgt и кодом, но всё-таки это было нечётко и как-то сбивчиво, поэтому объясняю подробно.
Зайдите в папку «Документы» или «Мои документы», если вы используете windows xp.
Там создайте папку «music» естественно без кавычек.
В папке music создайте файлик music.bgt. Повторяю: расширение файла должно быть bgt.
Также в эту папку закиньте вашу любимую музыку в формате wav.
Назовите её music.wav.
Учтите, что все имена файлов я пишу с расширением вместе.
Далее на файле music.bgt нажимаем контекст, либо правую кнопку мыши и выбираем пункт «Edit script».
Затем вылезает обычное окошко блокнота.
Теперь пишем код. Кстати, в коде будут использованы комментарии, о которых мы ещё не говорили. Видимо настало время рассказать о них.
С помощью комментариев программист может объяснить какие-либо строчки кода, которые он пишет. Вы спросите: «Зачем ему это делать, если он сам пишет код?».
Ответ прост: например в нашем случае комментарии нужны, чтобы показать вам, как и что делать.
Пример комментария:
void main() {
//Запускаем главную функцию.
}
//Закрываем главную функцию.
Это были примеры однострочных комментариев, то есть в этих комментариях нельзя переходить на новую строку и продолжать писать комментарий, тогда скрипт выдаст ошибку.
Чтобы написать однострочный комментарий, просто поставьте перед ним два символа косой черты либо, как его ещё называют, slash.
Чтобы написать многострочный комментарий, пишут так:
/*Права на эту программу пренадлежат моей компании.
Сайт программы: http://mysite.ru/
Удачного использования моего програмного обеспечения.
*/
То есть сначала ставится slash, далее символ звёздочки, либо его ещё называют знаком умножения, затем идёт комментарий на скольки угодно строках, затем идёт опять символ звёздочки и slash.
Думаю, что с комментариями мы разобрались.
Перейдём к нашему коду:
sound music;
//Создаём звуковой объект;
int check = 0;
//Создаём переменную проверки и присваиваем ей значение поумолчанию 0.
void main() {
//Запускаем главную функцию.
music.load(«music.wav»);
//В наш звуковой объект загружаем звуковой файл.
show_game_window(«Музыка»);
//Этот объект позволяет нам создать игровое окно. Правда игры у нас нету, но всёравно окно создать нужно.
while(true) {
//Запускаем обработчик нажатий клавиш.
if(key_pressed(KEY_UP)) {
//Проверяем, нажата ли клавиша «стрелка вверх».
if(check==0) {
//Проверяем, равна ли наша переменная нулю.
music.play();
//Воспроизводим звуковой файл, обратившись к имени его объекта.
check=1;
//Задаём переменной check значение 1.
}
//Закрываем первое условие.
}
//Закрываем второе условие.
if(key_pressed(KEY_DOWN)) {
//Проверяем, нажата ли клавиша «стрелка вниз».
if(check==1) {
//Проверяем, равна ли наша переменная одному.
music.stop();
//Останавливаем воспроизведение музыки.
check=0;
//Присваиваем переменной check значение поумолчанию, то есть 0.
}
//Закрываем первое условие.
}
//Закрываем второе условие.
if(key_pressed(KEY_ESCAPE)) {
//Проверяем, нажата ли клавиша «Отмена».
exit();
//Завершаем работу скрипта.
}
//Закрываем условие.
}
//Закрываем обработчик нажатий клавиш.
}
Закрываем главную функцию.

Как вы, наверное, поняли, сначала в коде идёт строчка кода, потом идёт комментарий к ней.
Теперь сохраняем всё, что написали.
Сделать это можно так:
Нажать «alt+f4», в диалоговом окне выбрать «Сохранить».
Теперь нажмите на файле music.bgt энтер либо 2 раза счёлкните мышкой и скрипт должен запуститься, если вы конечно всё правильно написали.
Предупреждаю, что скрипт лучше запускать с программой экранного доступа NVDA, так как программу JAWS мы не обрабатывали, так как вам пока рано такие вещи знать, как программисту.
В появившемся окне нажмите стрелку вверх и музыка начнёт воспроизводиться.
Нажмите стрелку вниз и она остановится.
Так вы можете нажимать до бесконечности.
А теперь объясняю, что мы писали в коде.
Сначала мы создали звуковой объект нашей музыки, создали переменную для проверки.
Тут стоит остановиться. Для того, чтобы скрипт знал, когда воспроизводить, а когда останавливать нашу музыку, нам нужна какая-то переменная проверки.
Так вот мы и создали эту переменную check со значением 0, при котором музыка играть не будет.
Далее идёт обычная главная функция main().
После мы загружаем наш звуковой файл в созданный ранее объект.
Далее создаём окно нашей игры, то есть скрипта. Ведь BGT — язык для создания игр, поэтому окно называть мы будем игровым окном. Если его не создать, то скрипт у вас запустится, но вот управлять им вы не сможете, так как окна-то не будет, где можно было бы нажимать клавиши.
Далее мы пишем обработчик клавиш. Ну или обработчик нажатий клавиш.
Этот обработчик нужен, чтобы в нём проверять нажимаемые пользователем клавишы. Без него никак нельзя, как и без игрового окна.
Далее мы проверяем:
если нажата клавиша «стрелка вверх», то:
Далее идёт ещё одно условие, которое необходимо проверить.
Если переменная check имеет значение 0, то тогда и только тогда воспроизведётся музыка.
Далее закрываем эти 2 условия и переходим к следующей клавише.
Если нажата клавиша «стрелка вниз», то:
Опять проверяется переменная check, но на сей раз, если она равна одному, то тогда и только тогда музыка остановится.
Дальше просто закрываем эти 2 условия, как уже делали до этого.
Дальше идёт третья клавиша. Вы спросите, За каким лешим она нам нужна, но поймите одну важную деталь:
если пользователь не может выйти из вашей игры — грош цена такой игре.
Представьте, что пользователь будет всё время выбивать вашу игру через диспетчер задач.
Согласитесь, что такой подход крайне глуп. В такую игру никто играть не будет.
Поэтому нам нужно создать специальную клавишу выхода из игры. Мы и написали вот такое:
Если нажата клавиша «отмена» или просто escape, то игра закрывается методом exit();
Об этом и о других методах я напишу в других статьях.
Далее закрывается условие, затем закрывается обработчик клавиш и под конец закрывается главная функция.
Думаю, что теперь вам понятно, зачем мы учим всю теорию. Она будет нужна в практике, как не странно это звучит.
Теперь у вас точно должно появиться желание изучать BGT.
Ведь оказалось на деле, что он не так уж и сложен, просто нужно сесть, посидеть, почитать и подумать.
Удачи вам, следите за обновлениями.
О том, что было вам не понятно, пишите в комментарии, всегда буду рад ответить на ваши вопросы.

BGT — Отойдём от теории.: 0 комментариев

  1. есть ли апиратор, чтобы реагировал на нажатие клавиши? например: нажимаем клавишу- музыка играет; отпускаем клавишу- музыка остонавливается.

  2. есть ли апиратор, чтобы реагировал на нажатие клавиши? например: нажимаем клавишу- музыка играет; отпускаем клавишу- музыка остонавливается.

    Я думаю, что тут с условиями работать нужно.
    А так может Asffix ответит более подробно.

  3. Да, есть. Вместо (KEY_PRESSED(KEY_UP)) надо писать (KEY_DOWN(KEY_UP)) реагирует на момент нажатия клавиши и (KEY_UP(KEY_UP)) на момент отпускания клавиши. в данном случае работа производится с клавишей стрелки вверх.

  4. Оператор для нажатия клавиши key_down(KEY_D) к примеру. Этот оператор используется в условиях.
    то есть:
    if(key_down(KEY_D)) {
    music.play_looped();
    }
    А оператор, который проверяет отпускание клавишы:
    key_up(KEY_D)
    также применяется в условиях:
    if(key_UP(KEY_D)) {
    music.stop();
    }

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