Пятница, 19.04.2024, 00:57
Приветствую Вас Гость | RSS
Главная | Каталог статей | Регистрация | Вход
Меню сайта
Категории каталога
BlitzMax [14]
Blitz3D [9]
BlitzPlus [0]
Xna [1]
DarkBasic [0]
Общее [3]
Наш опрос
Играете ли вы в Spacer?
1. Да
2. Нет
3. Собираюсь
Всего ответов: 36
Форма входа
Поиск
Друзья сайта
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Статьи
Главная » Статьи » BlitzMax

BlitzMax для начинающих, часть 1
Это простенький тьюториал по BlitzMax. Цель в том, чтобы нарисовать какой-нить текст на экране в графическом режиме. OK, давайте не будем терять время и сразу перейдем к установке графического режима.
width=640
height=480
depth=16
Graphics width,height,depth

Сперва определим переменные для хранения высоты, ширины, и глубины цвета - таким образом, мы сможем использовать их позже, если\когда нам понадобится знать параметры экрана.

Затем мы используем комманду Graphics, чтобы установить графический режим и создать полноэкранное окно разрешением 640x480 и глубиной цвета в 16 бит, чтобы можно было рисовать в нем. Перед рисованием чего-либо на экране мы должны обязательно использовать команду Graphics.

Теперь, давайте напишем какой-нибудь текст на экране. В отличии от Blitz3D, мы используем растровые шрифты для отображения текста вместо простых шрифтов. Растровые шрифты лучше преобразуемых шрифтов, потому что они отображаются быстрее и с ними можно обращаться, как с обычными картинками, т.е. мы можем их блендить, крутить и т.д.
font=LoadImageFont("Arial.ttf",1)
SetImageFont font

Первая строка загружает наш шрифт в память и возвращает указатель на адрес в памяти, который мы можем потом использовать для установки шрифта текущим, что мы и делаем во второй строке.

Теперь давайте начнем наш главный цикл.
While Not KeyDown(KEY_ESCAPE)

Это начало нашего главного цикла. Он просто проверяет, нажат ли Esc или нет - если нажат, то мы выйдем из цикла, а если нет, то код внутри цикла будет выполняться дальше.

Мы использовали KEY_ESCAPE в нашем цикле, но не определили его значение в начале. Дело тут в том, что есть такой модуль, содержащий константы со СканКодами (номерами клавиш), одной из таких констант является KEY_ESCAPE.

ОК, теперь давай нарисуем наш текст.
DrawText "Hello World",0,0

Этот код выведет текст "Hello World" в backbuffer(Задний Буфер) с координатами 0,0 используя текущий шрифт, который мы установили ранее.

0,0 в BlitzMax - это верхний левый угол экрана. Если мы хотим двигать текст вправо\влево, то нам нужно только изменить (больше - правее) переменную x (первое значение), а если вверх \ вниз, изменить (больше - ниже) переменную y (второе значение). Чтобы отобразить текст в нижнем правом углу, то мы можем выставить значения близкие к тем, которые мы использовали в комманде Graphics - 640 и 480.

BackBuffer (Задний Буфер) - это как бы спрятанный экран, который позволяет тебе рисовать что угодно, без показывания самого процесса рисования на экране во время вызова команды рисования.

Когда ты захочешь показать всё то, что ты нарисовал, то тебе понадобится "перевернуть" (Flip-нуть) BackBuffer, тогда он займет место FrontBuffer-а (картинка, которую мы видим). Это мы сейчас и сделаем.
Flip

Это напишет наш текст на экране. Круто!.

Итак, что будем делать теперь? Ну, самым лучшим, наверное, будет, если мы отчистим backbuffer. "Но",- спросишь ты, - "зачем?". Ну, таким образом мы сможем рисовать заново в следующем повторении цикла. Так действует движок большинства игр - рисует всё в BackBuffer, "flip-ает" его, затем очищает, чтобы можно было начинать рисовать следующий кадр.
Cls

Теперь наш backbuffer чист, и мы можем начать всё заново...
Wend

Это конец нашего главного цикла. У каждого цикла должны быть свое начало и конец, и когда BlitzMax достигнет конца, он начнет всё с начала.

Это наша первая прога на BlitzMax! Она просто выводит надпись "Hello World" на экран. Вот весь код.
;blitzmaxa.bmx
width=640
height=480
depth=16
Graphics width,height,depth

font=LoadImageFont("Arial.ttf",1)
SetImageFont font

While Not KeyDown(KEY_ESCAPE)

DrawText "Hello World",0,0

Flip
Cls

Wend

Источник: http://blitzetc.boolean.name/issue01.htm#a5

Категория: BlitzMax | Добавил: JohnK (30.03.2007) | Автор: MANIAK_dobrii
Просмотров: 1764
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Copyright JohnK© 2024