[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 2 из 3«123»
Модератор форума: MiniTiv2008 
Форум » Создание игр » Программирование » Программирование в среде Blitz3D (краткий курс по Blitz3D)
Программирование в среде Blitz3D
di_snayderДата: Пятница, 28.08.2009, 08:13 | Сообщение # 16
Тень Админа:)
Группа: Пользователь
Сообщений: 81
Награды: 1
Репутация: -1
Статус:
WoW!
NDV89, продолжайте:)


Направляй свои мысли куда следует, иначе они направят тебя, куда не следует. ©
 
TermerДата: Суббота, 29.08.2009, 20:35 | Сообщение # 17
Рядовой
Группа: Пользователь
Сообщений: 1
Награды: 0
Репутация: 0
Статус:
даешь еще статьи!!! cool
 
NDV89Дата: Четверг, 10.09.2009, 20:42 | Сообщение # 18
Учитель форума
Группа: Пользователь
Сообщений: 27
Награды: 1
Репутация: 4
Статус:
Итак, господа присяжные заседатели, продолжаем мучать систему программирования Блиц. Я надеюсь, что вы уже
скачали Блиц версии 1.83 и обновили его до 1.98 (или 1.99) . Также уже пора было научится создавать файлы
с текстом программ (они имеют расширение .bb, то бишь BlitzBasic) и компилировать эти файлы в исполняемые модули
(exe-файлы). Для тех, кто не вкурил, как пользоваться Блицем, поясняю:
ctrl+N - создание нового файла-исходника (т.е. *.bb)
ctrl+O - открытие существующего файла-исходника
ctrl+S - сохранение файла-исходника
F5 - запуск программы
F6 - повторный запуск программы
F7 - проверка текста программы на наличие ошибок (без запуска)

Ну и конечно, можно пользоваться пунктами меню или иконками панели инструментов, но настоящие кодеры
обе руки держат на клавиатуре и не отвлекаются для использования ламерской мыши)
А теперь по существу. Если вы делали предыдущие задания, то наверное заметили, что наш друг Блиц выводит текст
мелким шрифтом, так что читать это совсем невыносимо. Но в системе Windows установлено несколько десятков
красивых шрифтов, любой из которых можно применить и вашей прорамме на Блице. Сейчас мы этим и займемся!

 
NDV89Дата: Четверг, 10.09.2009, 20:48 | Сообщение # 19
Учитель форума
Группа: Пользователь
Сообщений: 27
Награды: 1
Репутация: 4
Статус:
Глава 2. Учимся работать со шрифтам

Итак, попробуем вывести любой текст, используя шрифт Arial, 24 кегель. Вот собственно прога, которая это делает:

fnt = LoadFont ("Arial", 24)
SetFont (fnt)
Print "This is Arial font, size 24!"
WaitKey

 
NDV89Дата: Четверг, 10.09.2009, 21:23 | Сообщение # 20
Учитель форума
Группа: Пользователь
Сообщений: 27
Награды: 1
Репутация: 4
Статус:
Итак, разбираем программу по строкам:

fnt = LoadFont ("Arial", 24)

В этой строке в переменную fnt с помощью функции LoadFont загружается шрифт. Почему переменная называется именно fnt ? Да потому, что я её так назвал! Вы можете называть её по-другом, это не принципиально. Но желательно, что бы имя переменной отражало её суть. Я использовал fnt как сокращение слова font (шрифт). Теперь рассмотрим саму функцию LoadFont. Эта функция в общем виде принимает пять параметров, но для корректной работы достаточно и одного параметра (название шрифта). перечислю все параметры слева направо:

1. Имя шрифта. Обязательный параметр. Представляет из себя текстовую строку, поэтому должен быть взят в кавычки.
2. Размер шрифта. Необязательный параметр. Если его не указать, то будет использован 12 размер. Я указал 24.

Следующие три параметра имеют так называемый логический тип. Это значит, что они могут принимать только два значения: True(истина) или False(ложь). Ещё этот тип называют Булевым типом. Так вот, собственно параметры:

3. Жирный шрифт. True - да, False - нет. По умолчанию (если ничего не указывать) используется False.
4. Шрифт курсивом. Аналогично параметру 3.
5 Подчёркнутый шрифт. Аналогично параметру 3.

Так как я не использовал последние три параметра, они по умолчанию были установлены в False, и мы имеем нежирный, не курсивный шрифт без подчёркивания.

А если бы я писал полностью, я бы написал:

fnt = LoadFont ("Arial", 24, False, False, False)

и получил бы аналогичный результат.

Теперь разберём вторую строку программы:

SetFont (fnt)

Здесь используется функция SetFont. Она устанавливает активный шрифт. Дело в том, что вы можете загрузить в программу несколько шрифтов (используя несколько переменных), и Блиц должен знать, какой именно шрифт нужно использовать. Сама по себе загрузка не даёт видимых результатов - нужно использовать SetFont для использования загруженного шрифта. Такой подход позволяет выводить на экран сообщения несколькими шрифтами в пределах одного экрана, что очень пригодится в играх.

Последние две строчки программы

Print "This is Arial font, size 24!"
WaitKey

в комментариях не нуждаются (смотрите предыдущие главы уроков).

 
NDV89Дата: Четверг, 10.09.2009, 23:42 | Сообщение # 21
Учитель форума
Группа: Пользователь
Сообщений: 27
Награды: 1
Репутация: 4
Статус:
Теперь напишем программу, которая позволят проверить работу функции LoadFont в различных режимах:

fnt1 = LoadFont ("Arial", 16)
fnt2 = LoadFont ("Arial", 16, True)
fnt3 = LoadFont ("Arial", 16, True, True)
fnt4 = LoadFont ("Arial", 16, True, True, True)
fnt5 = LoadFont ("Arial", 16, False, True, True)
SetFont (fnt1)
Print "This is 1st font"
SetFont (fnt2)
Print "This is 2nd font"
SetFont (fnt3)
Print "This is 3rd font"
SetFont (fnt4)
Print "This is 4th font"
SetFont (fnt5)
Print "This is 5th font"
WaitKey
FreeFont (fnt1)
FreeFont (fnt2)
FreeFont (fnt3)
FreeFont (fnt4)
FreeFont (fnt5)
End

Программа большая, но не сложная. Сначала в память загружается 5 шрифтов, каждый в свою переменную. Затем
происходит вывод пяти строк текста, перед выводом каждой строки активный шрифт меняется. Затем используется незнакомая функция - FreeFont . Она предназначена для удаления указанного шрифта из памяти (единственным параметром функции является переменная шрифта). Здесь она использована только для "хорошего стиля" программирования, т.к. после завершения работы программы вся память, выделенная ей, очищается самой системой Windows. Но иногда FreeFont бывает действительно полезной, ведь шрифты кушают память, которой никогда не бывает много)). Поэтому необходимость избавится от шрифтов может возникнуть до завершения самой программы (например, при переходе на следующий уровень игры).

Из этого примера видно характерную особенность функции Print - она переводит невидимый курсор на новую строку, так что следующая функция Print печатает на новой строке (извините за каламбур, но по другом не скажешь). Иногда требуется вывести несколько строк (т.е. несколько объектов типа "СТРОКА") на одну строку экрана. Для этого можно использовать функцию Write. Она аналогична Print , но не переводит курсор на след строку. Сравните результаты работы двух программ:

fnt = LoadFont ("Arial", 16)
SetFont (fnt)
Print "Blitz "
Print "Basic "
WaitKey
FreeFont (fnt)
End

и

fnt = LoadFont ("Arial", 16)
SetFont (fnt)
Write "Blitz "
Write "Basic "
WaitKey
FreeFont (fnt)
End

Кто-то скажет, что в первой программе можно написать просто

Print "Blitz Basic"

и результат будет аналогичен со второй программой. Это так, но иногда (в "настоящих" программах) невозможно объединить несколько текстовых строк в одну.

 
NDV89Дата: Пятница, 11.09.2009, 00:08 | Сообщение # 22
Учитель форума
Группа: Пользователь
Сообщений: 27
Награды: 1
Репутация: 4
Статус:
Так, теперь было бы неплохо научится общаться с пользователем программы и адекватно воспринимать его команды. Для начала напишем прогу, которая спрашивает имя пользователя, а затем здоровается с ним. Вот код:

fnt = LoadFont ("Arial", 16)
SetFont (fnt)
user_name$ = Input ("Как Вас зовут, сударь?")
Print "Очень приятно, " + user_name$ + "!"
WaitKey
FreeFont (fnt)
End

Итак, ввод информации обеспечивает функция Input . Вот её общий вид*:

результат = Input ("[i]Запрос")

[/i]
Функция выводит "Запрос" на экран подобно функции Write и ждёт ввода данных пользователем. Пока пользователь печатает (или не печатает) ответ, программа ожидает (не выполняется). Когда пользователь нажмёт Enter вся введенная им строка будет записана в переменную результат

Теперь подробнее.

"Запрос" - единственный (и не обязательный) параметр функций. Используется как подсказка пользователю. представляет из себя текстовую строку. Если его, нет, то, естественно, ничего и не выводится, но функция Input всё равно работает (ожидает ввод данных). в нашем примере "запрос" - это строка "Как Вас зовут, сударь?"

результат - переменная текстового типа. Так как текстового, то в конце имени ОБЯЗАТЕЛЬНО должен стоять ЗНАК ДОЛЛАРА $. Это означает, что переменная именно текстового типа. Имя может быть любым, но желательно, чтобы оно отражало своё назначение. В нашем примере это user_name$ (имя пользователя). Обратите внимание, пробелы использовать нельзя, я использую символ подчёркивания.

 
Призрачный_ГонщикДата: Воскресенье, 13.09.2009, 13:38 | Сообщение # 23
Рядовой
Группа: Администратор
Сообщений: 109
Награды: 1
Репутация: 7
Статус:
Чето у меня ниодна прога нормально незаработала... sad в чем может быть проблема???
 
di_snayderДата: Понедельник, 14.09.2009, 08:45 | Сообщение # 24
Тень Админа:)
Группа: Пользователь
Сообщений: 81
Награды: 1
Репутация: -1
Статус:
Quote (NDV89)
Я надеюсь, что вы уже
скачали Блиц версии 1.83 и обновили его до 1.98 (или 1.99) .

А ты читал про обновления?? там обновить нужно, так что думай....


Направляй свои мысли куда следует, иначе они направят тебя, куда не следует. ©
 
Призрачный_ГонщикДата: Вторник, 15.09.2009, 18:19 | Сообщение # 25
Рядовой
Группа: Администратор
Сообщений: 109
Награды: 1
Репутация: 7
Статус:
Дак у меня обновлен...
 
NDV89Дата: Пятница, 18.09.2009, 17:48 | Сообщение # 26
Учитель форума
Группа: Пользователь
Сообщений: 27
Награды: 1
Репутация: 4
Статус:
Какие именно ошибки возникают?
 
NDV89Дата: Пятница, 18.09.2009, 17:53 | Сообщение # 27
Учитель форума
Группа: Пользователь
Сообщений: 27
Награды: 1
Репутация: 4
Статус:
У кого нибудь получилось? Напишите здесь!
 
di_snayderДата: Пятница, 16.10.2009, 18:06 | Сообщение # 28
Тень Админа:)
Группа: Пользователь
Сообщений: 81
Награды: 1
Репутация: -1
Статус:
У меня всё получилось.
Продолжение?


Направляй свои мысли куда следует, иначе они направят тебя, куда не следует. ©
 
di_snayderДата: Пятница, 16.10.2009, 18:07 | Сообщение # 29
Тень Админа:)
Группа: Пользователь
Сообщений: 81
Награды: 1
Репутация: -1
Статус:
Code
fnt = LoadFont ("Arial", 16)
SetFont (fnt)
user_name$ = Input ("Как Вас зовут, сударь?")
Print "Очень приятно, " + user_name$ + "!"
WaitKey
FreeFont (fnt)
End

Вот это прикольный код.
У меня всё получилось.
Продолжение?


Направляй свои мысли куда следует, иначе они направят тебя, куда не следует. ©
 
di_snayderДата: Пятница, 27.11.2009, 08:07 | Сообщение # 30
Тень Админа:)
Группа: Пользователь
Сообщений: 81
Награды: 1
Репутация: -1
Статус:
Чё за вата НАРОД!
megaphone ГДЕ ПРОДОЛЖЕНИЕ!!!!аааа...


Направляй свои мысли куда следует, иначе они направят тебя, куда не следует. ©
 
Форум » Создание игр » Программирование » Программирование в среде Blitz3D (краткий курс по Blitz3D)
Страница 2 из 3«123»
Поиск: