Назад

Начнем урок с знакомства с командной "Rem" - прекрасным инструментом для создания собственных записей ("комментариев") в программе. Эта команда дает указание DarkBASIC пропускать все, что находится в строке после слова "Rem". Со временем ваши программы будут становиться все сложнее и сложнее, и вы будете тратить все больше времени на их написание, и вскоре начнете забывать, для чего предназначена та или иная переменная, и что именно делает тот или иной блок исходного кода. Именно для таких случаев служит команда "Rem" и вставленные комментарии, которые будут обо всем этом напоминать. Этот инструмент удобен также, если в процессе работы над проектом вы передаете исходный код своей программы коллегам и друзьями или когда одновременно работаете над несколькими разными проектами.
 

    Rem Устанавливаем частоту обновления экрана
    Sync On
    Sync Rate 30

    Rem Создаем сферу
    Make object cube 1,100

    Rem Основной цикл
    Do
       Rem  Сохраним вертикальный угол (по оси Y) объекта в переменной aY#
       aY# = Object angle Y(1)

       Rem  Управление вводом данных
       If Upkey()=1 then Move object 1,2
       If Leftkey()=1 then aY# = Wrapvalue(aY#+5)
       If Rightkey()=1 then aY# = Wrapvalue(aY#-5)

       Rem Вращаем сферу
       Yrotate object 1,aY#

       Rem Обновляем экран
       Sync
    Loop

Вы, вероятно, узнали часть кода из предыдущего урока. Не удивляйтесь, если в последующих уроках вам будут встречаться знакомые блоки кода. Если какая-либо команда покажется вам незнакомой и останется в уроке без объяснений, вернитесь к предыдущим урокам, чтобы освежить память, или обратитесь к справочной системе DarkBASIC.

А сейчас поговорим о переменных. Переменная - это величина, способная принимать разные значения и используемая для их хранения. В DarkBASIC применяется несколько типов переменных, различаемых по расширению. Взгляните на эту строку из нашего примера.

       aY# = Object angle Y(1)

В переменной "aY#" мы сохранили значение угла "Y" объекта "1". Обратите внимание на символ "#" в конце выражения "aY#". Он сообщает DarkBASIC, что нам нужно сохранить в переменной значение с плавающей точкой, то есть, число с десятичным знаком, например, 3.5, -5.5 и 0.00001. Такая переменная (она называется вещественной) позволяет хранить дробные числа, ее можно использовать для хранения координат или значения угла. Другие типы переменных в DarkBASIC - это символьные переменные, переменные для хранения массивов данных и переменные целого типа. Для обозначения символьных переменных используется символ "$", например, "A$ = "Здравствуй, мир" ". Данные, которые вы хотите сохранить в символьных переменных, должны заключаться в кавычки. В переменных для хранения массивов данных хранятся наборы данных одного и того же типа. Мы рассмотрим массивы в последующих уроках. Переменные целого типа хранят целые числа, как положительные, так и отрицательные, например, -5, 5, 2112, -10000. Для обозначения таких переменных расширение не используется. Как назвать переменные, решайте сами, но помните, что лучше давать им имя, близкое по смыслу к тому, что эти переменные хранят. Это окажется полезным при отладке программы и обсуждении вашего исходного кода с друзьями. Мы назвали переменную "aY#", чтобы ее имя напоминало нам о том, что в ней хранится значение угла "Y" объекта "1". Обратите внимание, что мы не используем полное название "AngleY#" (Угол Y#). По мере роста исходного кода вам придется много раз набирать на клавиатуре имена переменных. Сокращая имена, вы делаете свой код более легким для чтения и облегчаете себе работу.

        Object angle Y(1)

Команда "Object Angle Y" возвращает значение угла объекта, если он поворачивается по оси Y. Ось Y, по которой вращается объект, - это вертикальная линия, проходящая снизу вверх. Можно сравнить ее с земной осью, вокруг которой вращается наша планета. Ось X - это горизонтальная линия, проходящая слева направо. По горизонтальной оси вращаются колеса автомобиля. Ось Z - это направление от вас вдаль, вращение по этой оси можно сравнить с вращением автомобильного руля. В команде "Object Angle Y" в скобках указывается номер объекта, данные о вращении которого (по оси Y) вы хотите узнать. Помните, что команду нужно писать точно так, как она указана в справке. В этой команде пробела между "Y" и первой скобкой нет. Если команду написать неправильно, DarkBASIC не узнает ее и примет за ошибку.

       If Upkey()=1 then Move object 1,2

Выражение "If then" - очень мощная команда DarkBASIC, выполняющая функцию сравнения. Переменная, значение которой нужно проверить, помещается после "If". Если переменная имеет значение "Истина", то выполняются команды, стоящие после "Then". Если оно имеет значение "Ложь", то команды после "Then" не выполняются. В этом примере после "If" стоит команда "Upkey()". Она проверяет, нажата ли клавиша-стрелка вверх на клавиатуре и возвращает "1", если клавиша была нажата, и "0", если не была. Если клавиша нажата, выполняется команда "Move Object", перемещающая объект в том направлении, куда он "повернут лицом". Вслед за именем команды стоят числа, называемые параметрами. Первое число после команды "Move Object" - это номер перемещаемого объекта. Второе число обозначает количество единиц пространства сцены, на которые необходимо переместить объект каждый раз, когда выполняется эта команда.

       If Leftkey()=1 then aY# = Wrapvalue(aY#+5)
       If Rightkey()=1 then aY# = Wrapvalue(aY#-5)

Эти два выражения "If Then" проверяют, нажаты правая или левая клавиша-стрелка. Результаты нажатия этих двух клавиш разные. Используя эти выражения, мы также сохраняем значение в переменной "aY#". Команда "Wrapvalue" позволяет нам сэкономить целый блок программного кода. Дело в том, что команды вращения в DarkBASIC принимают значения только от 0 до 360. Этот диапазон чисел используется для вычисления угла поворота, а команда "Wrapvalue" отслеживает, чтобы значение не выходило за границы этого диапазона. Значение 365 будет преобразовано в 5. Внутри скобок команды "Wrapvalue" мы поместили нашу переменную угла по оси Y и оператор сложения или вычитания. Если нажата левая клавиша, к значению "aY#" прибавляется 5, а затем новое значение сохраняется в "aY#". То же самое происходит, если нажата правая клавиша, только в этом случае значение переменной "aY#" уменьшается на 5.

       Yrotate object 1,aY#

Команда "Yrotate object" поворачивает объект по оси Y на указанное число градусов. Первое число после команды обозначает номер объекта, второе - угол, на который нужно повернуть этот объект. Обратите внимание, что во втором параметре вместо числа использована переменная. В параметрах большинства команд DarkBASIC числа можно заменять переменными.

Затем мы используем команду "Sync", чтобы открыть занавес вашей сцены и вывести на экран новое положение объектов.

Попробуйте изменить значение, прибавляемое или вычитаемое из переменной в команде "Wrapvalue", чтобы ускорить или замедлить вращение.

Попробуйте также поменять значение второго параметра в команде "Move Object", чтобы увеличить количество пространственных единиц, на которые перемещается объект. Можно использовать значения с плавающей точкой, например, 0.5 или 1.5. Если число меньше единицы, то перед десятичным знаком лучше всегда ставить "0".

Попробуйте поменять команду "YRotate Object" на команду "ZRotate Object" или "XRotate Object", чтобы посмотреть, как будут поворачиваться объекты.

 

Hosted by uCoz