Архивы: по дате | по разделам | по авторам

DiNGS – программирование игр в домашних условиях. Часть 10.1

АрхивПрограммазм (архив)
автор : Александр Супрунов   12.03.2003

Подпрограммы. Схемы подпрограмм.

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

В чем смысл использования подпрограмм?

В тексте есть часть кода, функциональное назначение которого, к примеру, выполнить 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 не возвращающие никаких значений, что эквивалентно паскалевским процедурам).

Продолжение читайте завтра…

© ООО "Компьютерра-Онлайн", 1997-2024
При цитировании и использовании любых материалов ссылка на "Компьютерру" обязательна.