FAQ по B3D
полазев по форуму, и обнаружив, что у новичков возникают в основном одни и теже вопросы, решил вот написать FAQ по Blitz3D, дабы люди не засоряли форум постами из-за одного простенького вопроса, а нашли все нужное здесь. все мы когда-то были зелеными новичками и не знали как сделать то или иное...
я не считаю себя таким уж профессионалом в Blitz3D, я тоже продолжаю учиться и узнавать много нового про этот замечательный язык, но, думаю я вполне достиг того уровня, когда могу ответить людям на их вопросы. все материалы и вопросы взяты с форума и головы автора. большинство из приведенных здесь функций написаны либо мной либо взяты из стандартных хелпов блица, которые к сожалению не все могут читать... если у вас возникают вопросы, то пишите их сюда, только в краткой форме. время от времени я буду на них отвечать, когда наберется побольше. а пока, вот: |
Re: FAQ по B3D
ПРОГРАММНАЯ ЛОГИКА И ОБЩИЕ ВОПРОСЫ
н: как сделать в программе выбор из нескольких вариантов? avel:удобнее всего пользоваться структурой Select: Код:
Select переменная avel: воспользуйтесь AND'ом: IF условие1 And условие2 Then н: как быстро поменять значение переменной-флага? avel: m = Not m н: как задать бесконечный цикл и выйти из него? avel: Repeat ... If условие_выхода Then Exit Forever н: как изменить шаг в цикле? avel: используй команду Step н: как сделать, чтобы функция возвращала что-либо? avel: в функции: Return что_возвращать при вызове: куда_возвращать=имя_функции() н: как переместиться в определенную часть программы? avel: удобнее всего воспользоваться метками и командой Goto: .имя_метки ... Goto имя_метки н: чем отличается Gosub от Goto? avel: Gosub предполагает, что возможно будет возврат к предыдущей части программы с помощью команды Return н: как перебирать все элементы типа? avel: используй цикл: for имя_элемента.имя_типа = Each имя_типа ... Next н: как создать\удалить элемент типа? avel: создать: имя_элемента.имя_типа = New имя_типа удалить: Delete имя_элемента не забудьте сначала удалить все объекты этого элемента командой FreeEntity н: как создать массив типа и работать с ним? avel: 1) создаем тип стандартным способом. 2) создаем массив: Dim имя_массива.имя_типа(кол-во_элементов) 3) создаем элементы типа: имя_массива(номер_элемента) = New имя_типа 4) обращаемся так: имя_массива(номер_элемента)\параметр_типа параметр_типа - это то, что стоит после Field. н: как подключить какой-либо файл *.bb к программе? avel: используй команду Include "имя_файла.bb" н: как перевести число в целочисленный тип? avel: Int(число) н: генератор случайных чисел выдает одни и теже значения. что делать? avel: используй зависимость генерации от таймера, т. е. поставь вначале вот это: SeedRnd Millisecs() н: как избежать ошибки при написании строковых значений в различных регистрах? avel: используй команду Upper, она конвертирует все к верхнему регистру. н: как выводить текст команды Print или Input в определенном месте? avel: поставь перед выводом команду Locate x,y н: условие KeyHit() срабатывает раньше, чем надо. почему? avel: видимо надо использовать "очистку" нажатий клавиш: FlushKeys |
Re: FAQ по B3D
РАБОТА С ФАЙЛАМИ
н: как сохранять в файл? avel: Код:
avel: Код:
avel: вот так: If FileType("имя_файла") = 1 Then ... н: как "просканировать" некую директорию на наличие файлов? avel: это делается циклом: Код:
myDir=ReadDir("имя_директории") |
Re: FAQ по B3D
ВИДЕО И ЗВУК
н: как загрузить *.Gif файл? avel: в качестве текстуры никак, но можно его проиграть как видео-файл командой DrawMovie н: как проиграть видеоролик? avel: я пользуюсь такой вот функцией: Код:
Function screen(name$,keylog,fs=1,x=0,y=0) avel: можно так: Код:
sndWave=LoadSound("имя_файла") avel: есть несколько способов: Код:
;1 способ |
Re: FAQ по B3D
РАЗНОЕ
н: как работать с таймером? avel: примерно так: Код:
;в цикле пишешь: avel: используй HidePointer\ShowPointer н: как запустить другой файл из программы? avel: ExecFile("имя_файла") н: как включить каркасный просмотр? avel: If KeyHit(wire_key) Then wLog=Not wLog WireFrame wLog н: как создать равномерное освещение? avel: AmbientLight r,g,b н: как создать мерцающий свет (как от костра)? avel: Код:
avel: примерно так: water=CreatePlane() EntityColor water,10,60,200 EntityAlpha water,0.6 н: как сделать воду с волнами? avel: делается загрузкой меша или террайна: Код:
;создаем тип avel: используй CameraViewport н: как заставить спрайт не поворачиваться к камере? avel: SpriteViewMode имя_спрайта,2 н: как "снимать" скриншоты? avel: вот функция: Код:
Function screenshot() avel: используй команды работы с камерой: Код:
camera = CreateCamera() |
Re: FAQ по B3D
Цитата:
Цитата:
for m = 0 to n Step 1 ... next Остальное еще не прочитал... |
Re: FAQ по B3D
малаца! надо тока чтобы тему сразу видно было.
|
Re: FAQ по B3D
Р-Е-С-П-Е-К-Т-!!!
|
Re: FAQ по B3D
Хм, думаю ещё такой пунктик будет полезен:
вопрос: Как возвращать функцией не только целое число? ответ: За именем функции при создании ставить соответствующий оператор: Function ФункцияОператор() Return End Function Операторы могут быть 3 и более видов: # % или $. Ну чтото в этом роде добавь ;) Цитата:
Цитата:
Цитата:
Цитата:
ответ: Использовать комманду AmbientLight R,G,B. Цитата:
И ещё, ты извени но имхо, FAQ лучше оформлять так: Вопрос: Ответ: |
Re: FAQ по B3D
ВОт про мерцание света(так лучше чем через рандом, ПИШУ все как было):
ВОПРОС : Мне надо чтоб свет мигал ,более реалистичние. Сейчас я делаю так [LightRange light,Rnd(5,15)] ОТВЕТ: А зачем менять расстояние освещения, когда нужно скрывать\показывать свет: Задаешь время работы и время паузы: Код:
PauseTime = 100;Время паузы в миллисекундах Отклонение времени можно и не делать (убрать Rand'омы из кода), но так прикольнее ПС Этим кодом можно сделать и огонь и мерцающуюю лампу , да много что ... ППС Оригинальный код писал Platon |
Re: FAQ по B3D
все исправления и предложения принимаются. если я где-то что-то не совсем корректно описал, то прошу прощенья, возможно для новичков и впрямь не все так понятно... но за счет ваших поправок они думаю разберуться. а самим новичкам еще раз напомню, что они могут писать сюда свои вопросы и я время от времени буду на них отвечать.
|
Re: FAQ по B3D
прикольно, теперь соберите все это вместе, добавьте еще че-нить создайте отдельную тему и сразу ее закройте (чтоб мусором не засоряли)
|
Re: FAQ по B3D
ВОПРОС : так как же все-таки загрузить gif картинку как анимационную ленту?
ОТВЕТ: можно так: Код:
; Animated Gif file loader by Peter Scheutz 2003.03.13 ОТВЕТ: нужно нажать на кнопку ввиде домика на главной панели и вы попадете на главную страницу helpa , далее жмем Command Reference . Теперь на панели слева будут надписи Scancodes и Scancodes picker. Нажав на первую надпись вы попадете на страницу где бедет записаны все сканкоды клавиш в виде " Key - scancode". Нажав на другой надписи перед вами появится изображение клавиатуры. Нажав на нужную вам клавишу в верхнем поле с надписью Scan Code появится число, которое и является сканкодом выбранной клавиши. ВОПРОС : как узнать сколько треугольников в текущем фрейме? ОТВЕТ:для этого есть команда TrisRendered(), которая возвращает число треугольников попавших в камеру. Посмотреть можно так: Text 10,10,trisRendered() ВОПРОС : что делать если мне надо в типе сделать массив, например для элемета patrons? ОТВЕТ: Для этого просто впишите следующую строку в тип : Field patrons[100] Теперь обращатся к этому массиву можно так: указатель\patrons[13] = zaklinit_pistolet() ВОПРОС : У меня есть переменная. Она у меня должна вызываться в разных функциях, но этого не происходит.В чем может быть проблема? ОТВЕТ: Раз у вас переменная вызывается в разных функциях, то ее нужно обзывать как глобальную, тогда она будет доступна в любой части кода. Обзывать ее можно перед главным циклом, сразу после инициализации графики( после строчки graphics....), вот так: global имя_переменной |
Re: FAQ по B3D
|
Re: FAQ по B3D
Цитата:
|
Часовой пояс GMT +4, время: 19:17. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot