Главная » Статьи » Играем Blitz » BlitzMAX

BlitzMax для начинающих. Часть 2

На этот раз мы нарисуем лого BlitzMax на экране и будем его крутить. Как и раньше, мы начнем с установки графического режима.

width=640

height=480
depth=16

Graphics width,height,depth

ОК, нам нужна какая-нибудь картинка. Лого BlitzMax, думаю, подойдет. Вот она в .png формате.

Мы положим нашу картинку в папку с исходником и, затем, загрузим её, используя функцию LoadImage.

logo=LoadImage("BMax-Logo.png")

Функция LoadImage() загружает картинку и возвращает её адрес в памяти, который мы присвоили переменной logo. Теперь мы можем использовать эту переменную, чтобы нарисовать нашу картинку. После загрузки картинки мы начинаем наш главный цикл.

While Not KeyDown(KEY_ESCAPE)

Итак, давай нарисуем нашу картинку на экране. Мы можем сделать это использованием функции DrawImage с данными переменной logo.

DrawImage logo,width/2,height/2

Эти строки рисуют нашу картинку на backbuffer-е с координатами 320(width/2),240(height/2). Это как раз половина размера окна, которое мы создали командой Graphics; таким образом картинка будет нарисована в центре экрана.

Если бы! Знаешь, у картинок есть handle(так его лучше называть(не используя слово "пимпа":))), за который картинку можно таскать по экрану. Ты наверное ничего не понял, так вот: представь себе листок бумаги и канцелярскую кнопку, чтобы прилепить бумажку к стенке тебе нужно проткнуть бумажку и воткнуть кнопку в стенку. Так вот: в приведенном примере: кнопка - это handle, координаты handle: X - расстояние от левого края бумажки до места протыкания кнопкой, Y - расстояние от верхнего края бумажки до места протыкания кнопкой, ну и соответственно бумажка - это картинка.

В BlitzMax этот handle невидим, но всё же определяет, как картинки будут располагаться и вращаться. Когда нужно расположить картинку, то её handle ставится в требуемую позицию, ну а картинка, "привязанная" к нему двигается вместе с ним. Когда поворачивают картинку, то её поворачивают вокруг handle.

По умолчанию, handle картинки расположен в её верхнем левом углу. Но нам, конечно, этого не надо, нам надо, чтобы он был в центре. Это, однако, очень просто делается:

Если мы будем использовать эту команду перед загрузкой всех картинок, то после их загрузки в дальнейшем, их handle будет располагаться точно посередине.

Итак, у нас есть картинка с handle-ом посередине, так давай её покрутим. Крутить картинку (в реальном времени) в BlitzMax очень просто, нужно использовать функцию SetRotation.

Вставь эту строку прямо перед строкой с DrawImage(). Она определяет угол поворота, на который будут поворачиваться все картинки при их рисовании.

Если мы хотим нарисовать две картинки с разным углом поворота, то нам придется использовать функцию SetRotation дважды перед каждым использованием DrawImage.

Не будем мудрить, и используем её всего один раз. Мы будем хранить значение угла в переменной ang, чтобы можно было потом его изменить.

ang=ang+1

Вставь эту строку в любое место главного цикла. Она увеличивает значение угла поворота, так, что при исполнении программы, картинка будет крутиться. Затем нужно flip-нуть буфер, очистить экран, и закончить главный цикл.

Вот весь код, при его исполнении должно появиться крутящееся лого BlitzMax в центре экрана.

width=640

height=480
depth=16
Graphics width,height,depth

AutoMidHandle True

logo=LoadImage("BMax-Logo.png")

While Not KeyDown(KEY_ESCAPE)

ang=ang+1
SetRotation ang
DrawImage logo,width/2,height/2

Flip
Cls
 

Wend
 
Категория: BlitzMAX | Добавил: AD77Root (31 Июля 2015)
Просмотров: 79 | Рейтинг: 0.0/0
Всего комментариев: 0
class="uForm uComForm">
avatar