DiNGS – программирование игр в домашних условиях. Часть 10.1
АрхивПрограммазм (архив)Подпрограммы. Схемы подпрограмм.
Если вы следовали точно выше приведенным главам, то не сложно заметить, что ваш код подвержен некоторому беспорядку и с каждой новой строчкой становится сложнее найти что-либо в исходном тексте. Все происходит из-за незнания такого удобного средства, как подпрограммы. Благодаря им наш КОД может стать легок для поиска и понимания.
В чем смысл использования подпрограмм?
В тексте есть часть кода, функциональное назначение которого, к примеру, выполнить 10 секундную паузу в игре. По ходу программирования нам приходится вписывать этот кусок в новые и новые части кода.
С использованием подпрограмм все становится намного проще. Необходимый код мы выносим в подпрограмму, даем ей какое-либо имя (например, pause) и теперь при необходимости использования паузы просто пишем pause, что эквивалентно вставке соответствующей части кода. Код подпрограммы нужно писать выше или ниже основного цикла игры.
Схема: Инициализация переменных Начало цикла Тело игры Конец цикла Подпрограммы
Подпрограмма объявляется словом SUB , после чего идет название подпрограммы с двоеточием. Завершается подпрограмма словом ENDSUB.
Приведем пример подпрограммы увеличивающей координаты мяча Х и Y.
SUB move_ball: Ball_x=Ball_x+1 Ball_y=Ball_y+1 ENDSUB
Чтобы вызвать эту подпрограмму с названием move_ball необходимо дать команду GOSUB move_ball;
В Dings можно в меню редактора выбрать пункты Project->NewSUB и редактор сам автоматически создаст в конце программы каркас подпрограммы единожды спросив у вас ее имя.
Приведем пример перемещения мяча по экрану с использованием подпрограмм.
//Загрузка графики LOADSPRITE "ball.bmp",0 //Начало цикла игры WHILE TRUE GOSUB move_ball; //вызов подпрограммы move_ball SHOWSCREEN WEND //конец цикла ////////////////////////////// // Подпрограмма move_ball SUB move_ball: Ball_x=Ball_x+1 Ball_y=Ball_y+1 SPRITE 0, Ball_x, Ball_y,0 ENDSUB
Как можно видеть код стал более нагляден и понятен. Очень удобно использовать подпрограммы, как уровни игры.
Например: SUB Level_1 Тело-цикл уровня. ENDSUB SUB Level_2 Тело-цикл уровня. ENDSUB . . . Тогда код игры будет выглядеть так: Инициализация переменных Загрузка графики Начало цикла GOSUB Level_1; GOSUB Level_2; GOSUB Level_3; Конец цикла Подпрограммы Level_1, Level_2, Level_3.
Тогда изменение или удаление какого-то уровня произойдет в игре легко и безболезненно.
Не используя подпрограммы игру написать можно, но от вас потребуется помнить все изменения, которые вы вводите в код. Подпрограммы же существенно упрощают создание игр. К слову, подпрограммы используются во всех языках программирования, только имеют различные названия. В языке Паскаль они называются процедурами – PROCEDURE, а на С – функциями – FUNCTION, хотя конечно функция как мы рассмотрим ниже, больше чем просто процедура. Это код, получающий какие-то данные, изменяющий их и возвращающий новое значение (хотя это и не обязательно. В том же языке С есть функции void не возвращающие никаких значений, что эквивалентно паскалевским процедурам).
Продолжение читайте завтра…