Отправляет email-рассылки с помощью сервиса Sendsay

Новости сайта www.dyda.info

  Все выпуски  

DarkBASIC - легко создаем 3D миры и игры!


Информационный Канал Subscribe.Ru


Номер 3

Номер 3

От редактора

  Принимайте третий номер! Дай Бог не последний... :-)
  В предыдущем номере рассылки, я провел опрос с предложением проводить мини-опросы, но судя по тому, как вы принимали участие в том опросе, я т этой идеи отказываюсь. Может быть временно. Мды...
  Продолжаю двигать в массы ;-) идею программирования на DB, с помощью рубрики "Основы программирования" и "Медиахауса". :) Замечу, что я хоть и беру некоторые материалы из "Руководства пользователя", но все равно, более полную информацию по DB вы сможете почерпнуть ТОЛЬКО из "Руководства пользователя". Я не собираюсь в дальнейшем публиковать с своей рассылке полный хелп с описанием команд DB. Полный хелп вы можете прочитать установив лицензионный DB. Как закончим уроки для новичков, более опытным программистам будет интереснее. Думаю поместить исходники моей "Атмосферы Земли" с разбором "по-кирпичикам", как это все работает.
   Немного FAQ с моего сайта и интересные вопросы читателей - ждут вас, как всегда, в конце выпуска.

  Замирая в глубоком пардоне, Илья Середа.

  PS. Мне приходят письма с предложениями "о сотрудничестве". Я не против, но заметил одну общую для всех вещь и которая мне не подуше: делают сайт, иногда даже с удобной навигацией и красивым внешним видом, и располагают его или на тормозном хостинге, когда страничка грузиться по 3-5 минут, или хостинг быстрый, но сайт "двуязычный", т.е. (как мне кажется) был "дёрнут" у буржуев и наспех переведен на русский язык. Ребята - уважайте своих потенциальных посетителей! :-| Сначала доведите "до ума" свой сайт, а потом "делайте предложения". :-) И последнее замечание. Я не скажу, что мой сайт как-то выделяется в отношении красявости и дизайна (уж сделал как мог), но самое главное - это та информация, которая на сайте представлена. Можно сделать сногшибательный сайт, на крутом хостинге, но если он будет "пустой" - он умрет! Я один не смогу в полной мере наполнить информацией ваш сайт, а это значит, что первый "росчерк пера" должен быть ваш. :-) Я же вам смогу только помочь, но не заменить, если попросите конечно.

Содержание номера:

      1. Новости.

      2. Основы программирования.

      3. Вопросы и ответы.

      4. По вашим письмам.




Новости

  Главная новость - это официально представленная на www.darkbasic.com, программа для создания 3D-миров, под названием Cartography Shop. Далее несколько скриншотов и более подробно о возможностях Cartography Shop:

  Это Worldcraft-подобный редактор уровней, где вы можете размещать все, вплоть до источников света. Программа идеально подходит к DB. При ее создании преследовались две цели: удобство использования и гибкость. С Cartography Shop вы быстро разработаете уровень игры с автоматическим UV mapping-ом, вы сможете спокойно перемещать и изменять размеры объектов, просто нажимая и перемещая их. В Cartography Shop встроен редактор света, экспорт файлов .x и поддержка внешних plugin-ов. С помощью plugin-ов, например, реализуется экспорт 3D-миров в игру Half-Life! Это специальная программа написанная для разработчиков игр, в отличии от, например 3D MAX. Стоимость программы 39.99$. А скачать демо версию + кучку ;) plugin-ов + демку игры, вы сможете на этой странице.



  У немцев появились новые скриншоты языка следующего поколения DarkBASIC Professional. Теперь можно посмотреть на скриншоты самого редактора:

  Как мы видим, интерфейс редактора претерпел значительные изменения. И если в привычной для нас версии DB мы довольствовались или встроенным редактором с гнетущим черным фоном или редактором написанным сторонним программистом DarkEdit, то в профессиональной версии нас ждет очень удобный, внешне симпатичный и понастоящему ПРОФЕССИОНАЛЬНЫЙ РОДНОЙ редактор DB. И еще немного скриншотов из демок и игр написанных в DarkBASIC Professional:





Основы программирования.

  Продолжаю цикл начальных уроков по программированию и, естественно, созданию своей игры в замечательной системе DarkBASIC.
  Еще несколько слов ;-) об общих выражениях в DB:

ОБЩИЕ ВЫРАЖЕНИЯ

ВЫРАЖЕНИЯ ПРИСВОЕНИЯ

Выражение присвоения, которое вы уже использовали, является, наверное, самой распространенной составляющей любого языка программирования. Для присвоения значений переменным или массивам используется символ равенства (=):

a=42
a#=99.9
a$="Здравствуй"
lottery(1,1)=49


ОПЕРАТОРЫ DATA И READ

Порой приходится хранить данные в самой программе. Возьмем наш пример с лотереей. Гораздо удобнее создать в конце программы список выигрышных номеров и просто добавлять в него новые. С помощью операторов DATA и READ можно произвести следующие действия:

DATA 9,"ДЕВЯТЬ",9.9
READ a,a$,a#

Оператор DATA принимает несколько элементов данных, разделенных запятыми. Эти элементы могут быть разного типа, но считываться они должны в определенном порядке. Как видите, первый элемент данных является целым числом 9, второй - символьной строкой "ДЕВЯТЬ", за которой следует вещественное число 9.9.

Оператор READ также считывает в качестве параметров список, но он также должен содержать переменные определенного типа для избежания ошибки при считывании. Когда считывается один элемент данных, указатель перемещается к следующему элементу списка. Первый элемент - целое значение. Это означает, что число 9 будет успешно присвоено переменной целого типа А. Указатель данных перемещается к следующему элементу, которым является строка со значением "ДЕВЯТЬ". Она считывается и присваивается строковой переменной A$. То же самое относится к вещественному числу 9,9.

В памяти компьютера этот список данных выглядел бы так:

9
"ДЕВЯТЬ"
9.9

Если бы вы попытались считать целое число 9, результатом явилась бы пустая строка, так как эти типы несовместимы. Если попытаться считать строку символов в качестве целой или вещественной переменной, ей будет присвоено нулевое значение. Вы сами должны позаботиться о том, чтобы типы присваиваемых данных соответствовали типам считываемых.


ОПЕРАТОР RESTORE



С помощью оператора RESTORE можно в любое время восстановить указатель считывания и переместить его на первый элемент. Например, если пользователь хочет очистить экран и перерисовать его, а данные уже считаны, необходимо считать их заново. После восстановления указателя оператор READ начнет считывать данные с самого начала.

Можно также создать несколько списков данных. Например, если вам требуется не только список выигрышных номеров, но и номера лотерейных билетов, необходимо сформировать два отдельных списка:

lotterydata:
DATA 12,23,34,45,56,67
DATA 23,34,45,56,67,11
DATA 34,45,56,67,33,22

ticketdata:
DATA 01,02,03,04,05,06
DATA 21,32,43,24,13,22

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

RESTORE lotterydata
READ a,b,c,d,e,f
PRINT "LOTTERY ",a,b,c,d,e,f

Чтобы вывести на экран первый номер билета из второго списка данных, следует указать имя второй метки:

RESTORE ticketdata
READ a,b,c,d,e,f
PRINT "TICKET ",a,b,c,d,e,f

Существуют более удобные способы считывания данных из списка, но эти простые примеры демонстрируют, как получить доступ к нескольким спискам.


ОПЕРАТОРЫ ПЕРЕХОДА


Обычно программа выполняет команды последовательно, начиная с первой. Операторы перехода позволяют "перескакивать" к другой части программы. Команда GOSUB переходит к определенной метке и продолжает выполнение с нее. Если встречается команда RETURN, программа возвращается к GOSUB. Возьмем следующий пример:

PRINT "Здравствуй,"
GOSUB MySubroutine
END

MySubroutine:
PRINT "мир"
RETURN

Программа выведет на экран текст "Здравствуй,", затем перейдет к строке MySubroutine и продолжит выполнение. Следующий оператор выведет на экран текст "мир". Затем команда RETURN вернет программу на строку, откуда начался переход, и выполнит следующую за GOSUB команду END.

Оператор GOTO не помнит, откуда он совершил переход, поэтому будет продолжать выполнение с нового места, не возвращаясь на старое. Не рекомендуется часто использовать этот оператор, поскольку существуют более удобные способы управления программой. Тем не менее, приведем пример простой команды GOTO:

MyLabel:
PRINT "Здравствуй, мир";
GOTO MyLabel

Или в качестве альтернативы:

DO
PRINT " Здравствуй, мир";
LOOP

Согласитесь, что последний код более элегантный и "дружественный" и позволяет избежать использование оператора GOTO. Оператор GOTO остался в языке DarkBASIC для совместимости с более старыми версиями Бейсика.


Выражение FOR NEXT



Выражение FOR NEXT уже использовалось в предыдущих примерах. С его помощью создается цикл, в котором переменная увеличивается или уменьшается на определенное значение.

FOR T=1 TO 5
PRINT T;" ";
NEXT T
PRINT "Готово"

Вывод на экран будет выглядеть следующим образом:

1 2 3 4 5

Программа установит значение Т, равным 1, затем перейдет на следующую строку к оператору PRINT. После этого оператор NEXT вернет выполнение к команде FOR и увеличит значение Т до 2. Оператор PRINT выведет новое значение Т. Это продолжается до тех пор, пока Т не примет значение 5. Цикл заканчивается, и программа продолжает выполнение. Следующий после NEXT оператор выводит на экран "Готово", показывая, что цикл закончился.

Можно также создавать вложенные циклы, помещая одно выражение NEXT FOR в тело другого:

FOR A=1 TO 5
PRINT "ОСНОВНОЕ A=";A
FOR B=1 TO 10
PRINT "ПОДЧИНЕННОЕ B=";B
NEXT B
NEXT A

Выражение FOR NEXT увеличивает основную переменную А от 1 до 5, но при каждом цикле А выражение FOR NEXT внутри первого цикла увеличивает свою переменную В от 1 до 3. Эту конструкцию называют вложенным циклом, так как внутренний цикл вкладывается в тело внешнего.

Такие циклы наиболее удобны при обработке массивов данных. Переменные цикла увеличиваются и последовательно обозначают индексы массива. Например, мы можем вывести список выигрышных номеров следующим образом:

FOR week=1 TO 52 STEP 4
PRINT "Выигрышные номера за неделю ";week; " - ";
FOR index=1 to 6
PRINT lottery(week,index);" ";
NEXT index
NEXT week

Обратите внимание на новую команду STEP, добавленную в конец выражения FOR NEXT. Она используется для изменения увеличения (инкремента) переменной цикла со значения по умолчанию равного 1 на другое значение. В нашем случае программа выведет выигрышные номера только для каждой четвертой недели.


Выражение IF THEN



Оператор IF позволяет контролировать поток выполнения программы. Он требует оценки некоего выражения отношения, результатом которой является или "истина" или "ложь". Если результат "истина", выполняются команды, следующие за оператором THEN. Если - "ложь", программа переходит на следующую строку и игнорирует оставшиеся операторы. Например:

INPUT "Введите свой возраст>",age
IF age>=16 THEN PRINT "Вы можете купить лотерейный билет"

Если пользователь вводит значение, равное или больше 16, программа выводит это сообщение. Мы показали самый простой способ использования выражения IF THEN. Чтобы понять, как оно работает, нужно подробнее проанализировать оператор IF. Вначале возьмем выражение отношения

age>=16

Мы уже знаем, что он возвращает 0 или 1, если введенная цифра, обозначающая возраст, больше или равна 16. Оператор IF считает значение 0 ложью, а все остальные - истиной. Тем самым мы можем определить, что если указанный возраст больше или равен 16, результатом будет 1, т. е. с точки зрения оператора IF - истина.

Выражением отношения может быть любое сочетание значений, переменных, массивов и операторов при условии, что оно имеет смысл. Следующие выражения верны:

IF A THEN PRINT "правильно"
IF A = B THEN PRINT "правильно"
IF A > (B - 5) THEN PRINT "правильно"
IF A = (B + (A * 2)) THEN PRINT "правильно"
IF A=1 AND B=2 THEN PRINT "правильно"
IF NAME$="ФРЕД" AND SURNAME$="БЛОГГС" THEN PRINT "правильно"
IF A#=1.5 OR LOTTERY(10,2)=20 THEN PRINT "правильно"

А эти выражения не верны:

IF A = B = THEN PRINT "неправильно"
IF > A = B THEN PRINT "неправильно"
IF A B THEN PRINT "неправильно"
IF AND A THEN PRINT "неправильно"
IF B OR THEN PRINT "неправильно"

В случаях, если после THEN не хватает одной строки, можно использовать выражение IF ENDIF. Используя уже рассмотренную логику, поместите команды в отдельных строках после IF, затем отметьте конец исполняемых команд оператором ENDIF, как в следующем примере:

IF A = B
PRINT "Привет, A и B!"
ENDIF

Это то же самое, что и

IF A = B THEN PRINT "Привет, A и B!"

Однако главное преимущество этого метода заключается в том, что первую строку исходного кода можно изменить следующим образом:

IF A = B
PRINT "Привет, A!"
PRINT "Привет, B!"
PRINT "Привет, A и B!"
PRINT "Привет, B и A!"
PRINT "Привет всем!"
ENDIF

Можно также задать ответное действие, если выражение отношения окажется ложью. В случаях, когда при ложном условии необходимо выполнить другие строки программы, используется оператор ELSE.

IF A = B
PRINT "Значения одинаковые!
ELSE
PRINT "Значения разные!"
ENDIF

Важно помнить, что в расширенном варианте всегда применяется ENDIF. Обратите внимание, что ENDIF помещается в конец выражения, независимо от того, используется или нет оператор ELSE.


Оператор PRINT



Оператор PRINT может выводить более одного значения. Он принимает список параметров, разделенных запятыми, причем данные в списке параметров могут быть любого типа. Хотя в предыдущих примерах мы часто применяли оператор PRINT, у него есть несколько особенностей, о которых вы можете не знать.

Когда оператор PRINT используется для вывода на экран, отдельные буквы печатаются слева направо, а когда вывод заканчивается, курсор переходит на следующую строку. Каждый последующий оператор PRINT будет печатать с новой строки. Перехода на следующую строку можно избежать, если в конец строки параметров добавить символ точка с запятой (;). Например:

PRINT "Привет, ";
PRINT "мир"

Таким же образом с помощью этого символа можно отделять данные в строке параметров, например:

PRINT "Меня зовут, ";name$, " мне ";age;" лет."

Кроме того, с помощью команды SET CURSOR можно поместить текстовый курсор в любое место экрана. В следующем примере текст будет выводиться случайным образом по всему экрану:

DO
SET CURSOR RND(640),RND(480)
PRINT "ТЕКСТ"
LOOP

Кроме названных, в DarkBASIC существует еще ряд сложных команд управления текстом, обрабатывающих шрифты, их цвет, размер и стиль. О них вы узнаете в других разделах справочной системы и руководства пользователя.


Оператор INPUT



Хотя команда INPUT используется редко, она предоставляет очень простой способ получить от пользователя числовые и символьные данные. Определенный тип значения можно получить, используя переменную этого типа, например:

INPUT a$

Это выражение принимает ввод символьных данных пользователя. Если будет введено число, оно будет храниться в виде символьной строки в символьной переменной A$. В программе можно использовать приглашение для ввода определенного типа данных:

INPUT "Введите пароль: ",password$

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


Операторы END и BREAK



Оператор END завершает выполнение программы. Если вы запустили ее из редактора, то вернетесь в интерфейс командной строки (CLI). Применение команды END не позволяет продолжить выполнение программы после ее завершения. Если программа запускается как автономный исполняемый файл, то после ее завершения пользователь возвращается в Windows.

Если в программе встретится оператор BREAK, ее выполнение будет приостановлено, но не завершено. Оператор BREAK используется для приостановки программы и выхода в интерфейс командной строки для отладки. После BREAK выполнение можно продолжить.

  Далее я предлагаю несколько уроков по основам программирования. Для более детальной и полной информации - рекомендую обратиться к первоисточникам. А это компания "Медиахаус" и "Руководство пользователя", которое вы получаете в коробке с лицензионным DarkBASIC-ом.

УРОК 1
ЗДРАВСТВУЙ, МИР!


Для начала напишем маленькую программу, постоянно выводящую на экран слова "Здравствуй, мир".

Шаг 1. Вывод текста на экран:

На экран текст можно выводить с помощью команды PRINT, за которой следует то, что вы хотите сообщить. Давайте сначала выведем что-нибудь на экран, введя в редакторе следующую строку:

PRINT "Здравствуй, мир"

После ввода этой строки в редакторе, нажмите клавишу F5, чтобы скомпилировать и запустить программу. Для возврата в редактор нажмите кнопку ПРАВКА в левом верхнем углу экрана. Когда закончите, можете вернуться на ту же страницу справки, нажав клавишу F11.

Шаг 2. Повторный вызов команды:

Теперь, когда мы узнали, как осуществляется вывод на экран, давайте сделаем выполнение программы непрерывным, чтобы команда PRINT вызывалась постоянно. Поступим следующим образом:

DO
PRINT "Здравствуй, мир"
LOOP

Команды DO и LOOP обозначают начало и конец цикла программы. После запуска цикл будет выполняться бесконечное число раз. Программу можно в любое время завершить, нажав клавишу ESC.

Заключительный шаг. Контрольные задания:

1. Замените слова "Здравствуй, мир" любыми другими и посмотрите, как они будут повторяться на экране.
2. Поставьте в конце строки PRINT точку с запятой (;) и посмотрите, что получится.
3. Прочитайте справочную страницу о команде PRINT, чтобы узнать о других способах вывода на экран.

УРОК 2
"ВОЛЬНЫЙ ПЕЧАТНИК"

Цель этой программы - разбросать введенный пользователем текст по всему экрану в случайном порядке.

Шаг 1. Печать символьных переменных:

Если вы уже прочитали справочную страницу о команде PRINT, то, конечно, обратили внимание, что на экран можно выводить многое, в том числе символьные переменные, которые позволяют хранить в единственной переменной буквы, слова и целые предложения. Попробуйте написать следующую программу и запустите ее:

a$="Здравствуй, мир"
PRINT a$

Обратите внимание, что на экран выводится содержимое переменной. Тот же принцип относится и к числам.

Шаг 2. Позиционирование вывода:

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

Команда PRINT всегда осуществляет вывод на экран с текущего положения курсора, начиная с левого верхнего угла экрана. Позицию курсора можно установить с помощью команды SET CURSOR. При этом требуется указать два параметра: горизонтальную координату, задающую смещение курсора вправо от левого края экрана, и вертикальную, задающую смещение курсора вниз от верхнего края экрана:

SET CURSOR 10,10

Поместив эту строку в начало своей программы, вы увидите, что текст выводится с небольшим смещением от левого верхнего угла экрана. Это происходит потому, что в команде вы сами определили это смещение для курсора величиной 10 пикселов вправо по горизонтали и 10 пикселов вниз по вертикали. Стоит заметить, что курсор после выполнения стандартной команды PRINT переходит на новую строку и устанавливается в крайней левой позиции.

Шаг 3. Ввод данных пользователя:

Содержимое переменной не обязательно должно определяться в процессе написания программы. Для ввода числовых и символьных данных и присвоения им переменных существует команда INPUT. Она также помещает курсор в том месте экрана, где должен осуществляться вывод на экран. Замените строку a$="Здравствуй, мир" следующей строкой:

INPUT "Введите слово>";a$

Теперь пользователь имеет возможность ввести собственную строку. При нажатии клавиши ENTER вызывается команда PRINT, печатающая введенную строку на экране. Обратите внимание, где находится курсор после выполнения команды INPUT.

Шаг 4. Генератор случайных чисел:

Чтобы вывести на экран текст в случайном порядке, необходимо сгенерировать для курсора набор случайных координат. Это можно сделать с помощью команды RND, которая нуждается в указании единственного параметра, обозначающего диапазон случайных чисел.

PRINT RND(640)

При запуске эта строка выведет случайное значение от 0 до 640. Мы можем использовать эту команду для генерации случайных значений горизонтальной и вертикальной координат.

Шаг 5. Основной цикл:

Почти во всех больших программах есть основной цикл. Его можно сравнить с постоянно работающим двигателем. Очень часто это первое, о чем приходится думать программисту при написании новой программы.

Соедините вместе все шаги из этого и предыдущего уроков и напишите следующую программу:

INPUT "Введите слово>";a$
DO
CLS
SET CURSOR RND(640), RND(480)
PRINT a$
LOOP

Заключительный шаг. Контрольные задания:

1. Замените фразу-приглашение для ввода данных на следующую: "Как вас зовут?"
2. Измените программу так, чтобы текст появлялся только в верхней части экрана.
3. Измените программу так, чтобы экран полностью заполнялся текстом.




Вопросы и ответы.

  Скачал программу MatEdit для создания карт и не знаю как использовать готовые карты. Помогите!
  В своей программе в начале поставь эти строчки:

#include "LoadMatrix.dba"
Dim BigMatrix(600,600,1)
Dim StartLoc_X(1): Dim StartLoc_Z(1):Dim Info(2)
Dim TArrayX(1): Dim TArrayZ(1): Dim FKey(10,1)
Dim ColData(100): Dim ZoneData(100): Dim Tiles(500,500)
Dim OverTexture$(100): Dim OverName$(20): Dim ReplaceTex(100)
Dim MOffsetX(25): Dim MOffsetY(25)
Dim MWire(20): Dim MGhost(20): Dim Lock(20)
Dim MatX#(20): Dim MatY#(20): Dim MatZ#(20)
Dim MatWidth#(20): Dim MatHeight#(20)
Dim TilesX(20): Dim TilesZ(20)
Dim MatHi#(20): Dim MatLo#(20)
<Возврат>=LoadMatrix("<Имя файла матрицы>",Номер матрицы)

<Возврат> - 1 если матрица успешно загружена, 0 - если произошла ошибка при загрузке.
Файл LoadMatrix.dba найдешь в одном из каталогов, куда был устанвлен MatEdit.

  Можно ли в Бейсике сгенерировать бесконечную матрицу.!!!
  Я хотел сделать матрицу 100000*100000 100*100 и получил сообщение -количество полигонов матрицы превышает 1000(или 100000 точно не помню) пришлось использовать 4 матрицы

  Помогите разобратся с set matrix tile делаю матрицу, накладываю текстуру, а как определённый участок матрицы затекстурить чего я недопёр. Пытался, смотрел примеры и всё всё равно облом :-(
  Чтобы затекстуировать определённый участок матрицы, надо сначала подготовить тайловую текстуру с помощью команды (PREPARE MATRIX TEXTURE Номер матрицы, Номер рисунка, Кол-во тайлов по горизонтали, Кол-во тайлов по вертикали). Команда разбивает текстуру на тайлы как в матрицах. Номер присваивается начиная с верхнего левого угла до правого нижнего. Зетем уже выполняешь (Set matrix tile номер матрицы, X, Y, номер таловой текстуры). Желательно, чтобы тайлы текстуры были квадратными и их размер должен делиться на два. Например (2х2, 4х4,...,64х64 и т.д.). Максимальный размер 256х256 пикселов.
----------------------------------------
  Используй редактор матриц MatEdit


  Как можно сохранить все параметры матрицы ( с текстурами ) в отдельный файл в виде DATA 1,1,1......и т.д., а потом его загрузить.
  Возьми за основу билиотеки LoadMatrix или ImportMatrix из программ JuncEdit и CandyLand. Они позволяют загружать сохраненные матрицы. Сделай все что в них есть строго наоборот

  Что такое Dark Basic ?
  Dark Basic - гибкий и вместе с этим очень легкий в понимании язык программирования, расчитанный на минимальные знания в программировании вообще и большими знаниями "как должна выглядить моя любимая игра".

  Народ у меня DB(сама прога) грузит по дефолту разрешение 640X480 подскажите как увеличить, а то длинные строки не видно, приходиться курсором елозить. Фенкс заранее.
  Используй альтернативный редактор DarkEdit

  Dark Edit ругается при компиляции. И вообще с Dark Basic-ом не работает
  Значит так. Врубаешь DarkEDIT, дальше жмешь ПРАВКА=)НАСТРОЙКА=)РАСПОЛОЖЕНИЕ, и указываешь путь к файлам, которые там написаны (DB.exe и menu.htm), остальное по желанию.

  Насколько рационально использовать DB для создания 2d-квеста от третьего лица (вроде ПиВич или Сломанного меча) с паззлами, диалогами, ветвлениями и прочими причиндалами, но без всякого 3d. Узнал про DB буквально вчера и пока ничего про него не знаю. Какой будет объем программинга? Большое спасибо!
  Imxo легче будет сделать на Dark Basic-е, чем на любом другом языке. Для этого тебе дают: кроме простоты программирования на Basic-е, еще и 34 специальных команды для управления спрайтами, 35 специальные команды для управления звуком и 12 команд для управления музыкой, еще 16 команд для управления анимацией, и 28 команд для управления блиттерами. Я уж молчу, о том, что ты сможешь без всякой головной боли вставить 3D объекты в свою игру (например дома на улице сделать полностью трехмерными).

  Я скачал Dark Basic с Интернета (купил пиратский диск, хакнул или взял нахаляву). И у меня есть куча вопросов... И мне надо примеры и исходники, а также русский хелп. Дайте!
  Господа, тут наметилась одна, к сожалению, типичная для нашего многострадального отечества тенденция. Если вы еще не поняли, то назову ее имя "получить всё нахаляву". Требуется немного умственных усилий, чтобы понять одну простую вещь: нам, как издателю, нет совершенно никакого интереса поддерживать продукт, готовить для него патчи, документацию и проч., если российские пользователи сами провоцируют копирование или выкладывают в интернет либо сам продукт либо крэки к нему. Мы здесь деньги не печатаем, чтобы отбить лицензию. Продукт и так в России продается по цене в два с половиной раза ниже, чем во всех других странах. Хватит разводить детский сад и уходить в несознанку. Ваши провокации и готовность помочь бедным-несчастным неимущим, увы, заставляют нас задумываться о том, стоит ли нам продолжать это дело. Исходники и примеры - на втором диске. Кому надо, тот найдет способ заказать коробку.

М.Новиков. Служба поддержки.

  Когда выйдет патч 1.13 для русской версии? Сколько можно ждать?
  Не могу поверить лишь в одно, что абсолютно ВСЕМ именно СЕЙЧАС (на следующий день после покупки) требуется патч с новыми командами, кстати весьма специфическими. Это к слову. Конечно, это не оправдывает задержку его появления на русском языке, в чем каюсь и прошу прощения. С другой стороны, мы не договаривались с Ли, что мы будем его дергать всякий раз - поверьте, у него и без того забот хватает. Если вы заметили, то в каждой стране выходила та версия, которая была текущий на момент начала продаж. Зная, что в России всегда люди хотят получить много и сразу - мы и готовим такое решение с обновлениями и проч. продуктами. Естественно, нам тоже важно, чтобы такой выпуск был экономически оправдан. Это же определяет и тираж.

М.Новиков. Служба поддержки

  Подскажите можно ли в ДБ работать в оконном режиме и чтоб проги получались не в полный экран, а в виде окна?
  Для редактирования своей игры используй редактор DarkEdit. SET WINDOW ON - твоя прога запуститься в окне

  На днях купил DarkBasic v1.09. Подскажите, где можно найти русский help или какие-нибудь материалы, относительно DarkBasic'a. В общем, буду рад любой информации.!!!.
  Ты где его купил? Вот иди туда и верни диск обратно. На настоящем диске с DB вся документация на русском, как и сама программа + редактор DarkEdit тоже русский + второй диск с примерами и играми + отличная книжка.

  Будет ли работать DB на 3D ускорителе Voodoo 2
  В книжке на последней странице, есть большущий список поддерживаемых видеокарт. Есть еще и Voodoo Banshee и Voodoo Rush, Voodoo, Voodoo2, Voodoo3 и т.д.

  Когда я создаю екзешник, то минимальный размер его равен 1.6М. Хотя в некоторых примерах он 800К. Что это за глюк?
  Есть такое мнение, что в 1,6Мб входит и сам интерпретатор DB и листинг твоей программы + медиа-файлы. А файлы, которые ты видел (800Кб) скорее всего откомпилированны в новой версии DB Pro.

  Можно ли скачать Dark Basic через Интернет? И делать 2D игры?
  
www.darkbasic.com. Там можно скачать Trial версию DB 1.13. Она без объектов, без примеров, только help. 2D игру создать - запросто. Читай хелп.

  PS. Если серьезно, то купи лучше русскую в коробке - удобнее.

  Я практически совсем не знаю языков программирования. Достаточно ли документации на диске DarkBasic?
  Да. Вполне. Покупай версию в коробке - там книжка + 2 CD (один с языком, другой с примерами).

  Под какие ОС можно писать игры?
  Под всю линейку Windows с установленным DirectX версии 7.0 или выше.


  Если у вас есть, что дополнить или исправить или подсказать - не стесняйтесь! :-)




По вашим письмам.

From: Олег Зарянский
Sent: Wednesday, June 26, 2002 9:56 PM
Илья вот что я еще хотел спросить. Как сделать так, чтоб DB размеры расставлял в единицах измерения Си? Ну то есть не свои обстрактные значения типа 300 или 5000. А то не понятно, если с высоты 300 двигаться со скоростью 2, то какая это высота и скорость? И всетаки как сделать матрицу с нанесенной на нее текстурой твердым телом, чтобы она не пропускала камеру под себя?

  Если хочешь сделать в игре другую систему счисления (например, метры), то надо прикинуть "на глаз"... А вообще, это зависит от масштаба объектов, например, если здание в реальности высотой 10 метров - делай объект здания, например 100 единиц, и в таком масшабе все остальное делай, тогда для вычисления высоты самолета можно брать абстрактные ДаркБейсиковые единицы и делить их на 10, например, самолет на высоте 1230 "попугаев", а в реальности он был бы на высоте 123 метра.
  Что-бы объект не "проваливался" свозь матрицу, используй GET GROUND HEIGHT()
  Вставь сразу после команды DO в своей игре эти четыре строчки:

    if (camera position y() - 50) <= get ground height(1,camera position x(),camera position z())
      set cursor 0,0
      print "Соприкосновение с землей!"
    endif

  Здесь речь идет об имитации посадки самолета. Камера представляет собой вид из кабины самолета, поэтому в сравнении IF (выделено красным) я сделал "погрешность" на то, что находится снизу пилотной кабины: корпус, шасси и т.д. Кстати, проект Олега Зарянского (Рига) обещает быть очень интересным и не только визуально (качество графики, управление и играбельность), но и с точки зрения программирования! Удачи ему! :-)


Выпуск закончил 1 июля 2002 года в 11:00 мск


(C) 2002 Илья Середа
http://darkbasic.narod.ru - это и так понятно :-)
    http://virland.narod.ru - "Домашняя киностудия"
     http://sereda.narod.ru - "ВАЗ 1111 ОКА"

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное