категории | RSS

сначало добавлю от себя. Найдя эту статью прям слезы навернулись.. Давно изучал этот язык.. Статья не моя. Копирайт сохранен. И так поехали..
Было дело, в народных массах появился первый бытовой компьютер. Было дело, нашелся фанатик, настрочивший первый примитивный язык программирования для этой хитрой коробочки с клавишами. И с того времени компьютерный мир понесся к своим нынешним вершинам, набирая и набирая обороты. Вслед за Бейсиками появлялись Паскали, Си и иные языки программирования. Менялись концепции, рождались новые интерфейсы, выходили на компьютерный "подиум" новейшие операционные системы. Все это было, все это давало жизнь целым индустриям. Одна индустрия стала столь обворожительной, что собрала под своим крылом как создателей компьютерных игр, так и просто любителей поиграть в последние игровые хиты.
"Ох, - с горестью вздыхает современный сирота-игроделатель, -как просто было раньше". И действительно, а ну-ка попробуй померяйся силой с нынешними монстрами в разработке игр, если сам ты один-одинехонек как программист. А ну-ка попробуй создать привлекательный продукт, если обычные Пакманы, Монтезумасы и Болдердэши уже не в ходу. Всем подавай Диаблы, Думы или Халф-лайфы. И поэтому нет предела печали одиноких фанатов игроделания, ибо смысл в их существовании как нужной кому бы то ни было единицы исправился полностью.
Теперь другая история. Было дело, в народных массах появился первый мобильный телефон. Было дело, нашелся фанатик, настрочивший первый примитивный язык программирования для этой хитрой... Стоп! Больно знакомый сюжет, чуть ли не "де-жа-вю" (однажды виденное). Кажется, финал истории известен заранее. Так вот чтоб опять не оказаться в роли вздыхающего сироты, будем думать. Есть над чем, поскольку в общем доступе появился Бейсик для создания программ под мобильные телефоны. Если не успели осмыслить сказанное, поясняю: жизнь дает "сиротам" еще один шанс к созданию Пакманов, Монтиков и прочей древности, пока дело не дошло до сложнейших игровых систем. В общем, будущие кумиры телефонного игрового мира, соображаете, о чем речь?
Срочно двигайте на сайт разработчиков этого полезного творения, ищите там раздел "Download" и немедля качайте Бейсик (примерно 16,8 Мбайт), пока вас не опередили. А мы, также немедля, перейдем к его рассмотрению. И начнем в первую очередь с программных вопросов, отчего вы сразу поймете, что торопиться нужно офигительно, как поется в песенке, "скорый поезд набирает ход". Кто не успел, тот к бабушке не едет. Вот!
А с успевшими занять лучшие места мы в следующий раз рассмотрим, как работать с Бейсиком и как писать что-то более продвинутое, потому как свято место пусто не бывает, и если прогрессивному не научимся мы, вместо нас это сделают другие.

О языке программирования в целом

Mobile BASIC 2.0 (март 2004 года) - это язык программирования для современных мобильных телефонов и PDA (так называемых карманных компьютеров или, в простонародном жаргоне, наладонников), поддерживающий спецификации MIDP-1.0 / CLDC-1.0, то есть мидлеты J2ME -это такие откомпилированные приложения, способные выполняться на телефонах. Возможности Бейсика, а в общем-то в комплекте находится вполне солидная по меркам "телефонного" ПО среда разработки приложений, плюс прилагающихся к нему сервисов все-таки достойны внимания. Самое в наших условиях главное - это, конечно, наличие сервисов по так называемой немедленной OVER-THE-AIR (через расстояние) установке написанных вами мидлетов на чужие телефоны. В традиционном варианте загрузка мидлетов в телефон предлагается с помощью соответствующего кабеля и программного обеспечения, поставляемого с телефоном.
Однако мы не те люди, чтобы позволить всучить нам при покупке телефона какие-то "лишние" провода, еще и компакт-диск. Да и то большая редкость, чтобы в наших салонах мобильной связи предлагалось что-то больше в комплектации, чем просто телефон с книжечкой и гарантийным талоном. Когда же возникает желание "усовершенствовать" свой телефон новым софтом (чаще всего имеются в виду игры), на помощь приходит установка OVER-THE-AIR. Короче говоря, некоторый программист пишет новую игру и кладет ее, допустим, на свой сайт. Пользователь, заходя с телефона на сайт программиста, можете закачать игру сразу же в свой телефон, и ни какой нервотрепки.
Все это, разумеется, достигается специальным бесплатным сервисом, называемым MIDlet Uploader. Такой сервис предоставляет домашняя страница мобильного Бейсика, но если есть желание поставить Uploader у себя на сайте, они же предлагают вставить в тело вашей страницы следующий HTML-код:
Выгрузкамидлета
Собственно, их сервис тогда будет выполняться в кусочке окна вашей страницы. Суть работы Uploader-а заключается в следующем. Написав программу, программист в мобильном Бейсике может сохранить ее в виде JAD- и JAR-файлов. Вот эти файлы с помощью Uploader-а и выгружаются на сервер Mobile BASIC. Сервер тут же создает из них WAP/WML-файлы, подключившись к которым с помощью телефонного WAP-браузера у владельца телефона появляется на экране опция для установки этого файла в телефон. Вот так программа и закачивается в телефон "через расстояние".
Ну а если такой путь неудобен (мало ли, вдруг используете в программе какие-то авторские алгоритмы или она у вас коммерчески ценная и не хотелось бы "WAP-компилировать" ее где-то на стороне, да и просто вдруг сервис сейчас бесплатный, а завтра в мгновение ока станет платным), то придется пользоваться софтом типа Oxygen Phone Manager, способным выгружать/сгружать мидлеты с компьютера на телефон через кабель, либо искать другие утилиты, чтобы компилировать WML-файлы прямо у вас на компьютере. В общем, было бы желание, найти все можно.

О других возможностях

Итак, наличие путей к загрузке программы в телефоны увидели. Это самое главное, ибо что толку, если наше творение не смогут оценить другие любители телефонного софта. Теперь попробуем увидеть наличие путей к изощрению программ, так как простым Print "Привет мир!"никого уже не удивишь.
Помимо уже известной возможности создавать мидлеты, существует равнозначный потенциал к созданию Web-аплетов (приложения для Web-страниц), а также разработки приложений, способных связывать телефон с удаленными интернет-серверами. Не менее важно, что реализованы средства контроля над ошибками, то есть ловушки ошибок, чтобы предупреждать алгоритмические сбои в работе программы. Далее идут довольно неплохие в рамках "телефонного" программирования средства управления просто графикой, затем спрайтовая графика с определением столкновений. Это как нельзя кстати пригодится для анимации и игр. Имеются интегрированными: графический редактор, редактор карт и плиточных изображений, а также редактор Nokia Ring Tone, то бишь тональных мелодий для телефонов Nokia. Поддерживаются четыре типа данных: Integer, Long, String и Float. Наличествуют логарифмические и тригонометрические функции. Поддерживается подсветка синтаксиса. Формы с масштабными, текстовыми, списочными элементами, изображениями, датой и временем. Окна предупреждений (alert box). Даже есть произвольный доступ к файлам, причем файлы могут сохраняться и в самом телефоне. Возможности работы со звуком и некоторые другие, уже более мелкие возможности.
Приятно удивило, что Бейсик включает много команд для написания именно телефонных игр, причем процесс разработки программ хорош тем, что не требует высоких стартовых знаний в области мобильных телефонов. А присутствие нормального списка функций для работы с числами с плавающей запятой, безусловно, открывает дорогу телефонным программам офисного класса. Не Word-ы и не Excel-и, разумеется, но всякие органайзеры, напоминалки, и прочие такие "учетно-расчетные" вещи в скором времени, возможно, будут странствовать по телефонам в широком спектре реализаций. Если еще приложить к этому умелое употребление функций связи с удаленными серверами, глядишь, не за горами бум многопользовательских сетевых телефонных приложений.

О регистрации

Мобильный Бейсик - вовсе не бесплатная программа и распространяется в соответствии с доктриной пробного пользования. Пробная (trial) версия полностью функциональна, однако ограничивает размер создаваемых для мобильных телефонов мидлетов и Web-аплетов до менее чем 1 килобайта исходного кода. Хотя на запуск программ в среде разработчика (то есть на компьютере) такие ограничения не накладываются. Так что в случае, когда ваш исходный код не умещается в 1 килобайт, точно придется покупать Бейсик, потому как иначе работу вашей программы будете лицезреть только вы, и то лишь на экране монитора. Впрочем, на примитивные примеры 1 килобайта должно хватить, так что очень даже реально хотя бы в общих чертах оценить, насколько производительно выглядят те или иные действия вашей программы на экране мобильного телефона. Как пример, прежде чем засесть за планомерное создание очередного игрового шедевра, стоит поэкспериментировать, как быстро (или как программно-ресурсо-человеко затратно) будет выглядеть планируемое решение. Килобайта на эксперименты как раз должно хватить. Как говорится, и молока испробовать и грудь ощупать.
Что касается регистрационных моментов, здесь они продуманы необычно. По сложившимся правилам определяются три вида Бейсика: незарегистрированная, пробная и зарегистрированная версии. Незарегистрированная версия запускается не более 30 раз, после чего потребуется регистрация. Пробная версия вроде как должна работать всегда и с полным спектром возможностей, просто не дает сохранить мидлеты или Web-аплеты с размером исходного кода более 1 килобайта. Регистрированная версия, как можно догадаться, избавлена от всех недостатков. И все же есть интересный нюанс. Регистрационный код приобретается в известном порядке и считается правомочным в течение последующих 12 месяцев. Код гарантирует бесплатные обновления на весь этот период. Однако после истечения года эксплуатации последующие обновления уже предоставляются только в платном порядке, благо, за меньшую стоимость. Либо пользуйте старую версию, либо копите денежку на обновления до новых версий.

Общие положения языка

Программа, написанная на мобильном Бейсике, ничем особым не отличается от программ, написанных в других Бейсиках. Точно также программа состоит из ряда строк, а каждая строка может содержать одну или более программных инструкций. Если в одной строке находится несколько инструкций, все они разделяются символами двоеточия ":". Инструкция может состоять из команд, функций, переменных, констант и операторов.
Команды используются для того, чтобы сообщить Бейсику, что собственно он должен делать. Так, например, команда Print указывает ему, что в этот момент нужно вывести на экран некоторый текст, значение указанной переменной или нечто другое.
Функция - в принципе та же команда, но только функция всегда после себя возвращает определенное значение, зависящее от входных параметров функции. Возвращаемое значение передается в то места исходного кода, где функция вызывалась, что в определенном смысле позволяет ассоциировать функцию с динамической переменной, причем динамика изменений значения такой "переменной" определяется исключительно входными параметрами функции. В свою очередь входными параметрами могут быть переменные, константы или целые выражения. К примеру, переменная S$ после инструкции S$ = "Итого: " Str$ (3 4) будет содержать значение "Итого: 7", так как функция Str$ на основе входного выражения 3 4возвратит после себя текстовое значение "7", которое затем будет добавлено к текстовой константе "Итого: ".
Переменная является обладающим собственным именем "контейнером", в котором могут быть сохранены значения соответствующего типа. Чтобы уяснить суть понятия переменной, вспомните действие кнопки "Память" обычного калькулятора. При нажатии этой кнопки число на экране калькулятора сохраняется в памяти. Потом это число при необходимости можно извлечь из памяти и поместить обратно на экран калькулятора. Память калькулятора как раз и есть той самой переменной (контейнером), где временно сохраняется нужное значение, только в Бейсике можно использовать не одну переменную, а множество разных, определив для них разные имена. А имена переменных всегда должны начинаться только с букв (от английского A до английского Z). То есть первый символ имени переменной всегда является буквой, но все последующие символы могут быть как буквами, так и цифрами. Допускается между символами имени переменной вставлять символ подчеркивания, имитируя при необходимости пробел. Все другие символы использовать в имени переменной запрещается. Кроме того, имена переменных, как, впрочем, и названия самых обычных функций и команд Бейсика, не чувствительны к регистру букв, поэтому имена типа "TEST", "Test" и "test" ссылаются на одну и ту же переменную.
Переменные могут быть разных типов, что указывается специальным символом сразу за именем переменной. Если за именем следует символ "%" (процент), тогда переменная предназначена только для хранения целочисленных значений типа Integer - целые числа со знаком, например, 1, 4, 16, -5 и так далее. Если за именем следует символ "#" (решетка), переменная хранит длинные целочисленные значения со знаком типа Long. Если за именем следует символ "$" (доллар), переменная хранит строковые значения типа String. Если за именем не следует ни одного из трех приведенных символов, тогда эта переменная хранит значения с плавающей запятой типа Real.
Естественно, переменная содержит помещенное в нее значение до тех пор, пока в эту переменную не будет помещено новое значение. В дополнение программисту нужно следить за корректностью обращения к переменным внутри исходного кода ввиду наличия четырех разных типов значений, так как имена X%, X#, X$ и X обращаются к четырем разным переменным, ведь в этих именах обозначены совершенно разные типы сохраняемых значений.
Константой называется безымянное значение, данное в момент написания программы и которое невозможно изменить в процессе ее работы. Как и в случае переменных, имеется четыре типа констант: целочисленные константы со знаком, длинные целочисленные константы со знаком (в конце помечаются символом решетки: 3142#), константы с плавающей точкой (3.142) и строковые константы ("Привет").
Операторами, как правило, называют самые тривиальные операторы математического языка, среди которых плюс, минус, умножить и так далее. Правда, Бейсик обладает не только математическими операторами, но и логическим (операторы сдвига значений), условными (операторы сравнения) и некоторыми другими.

Переходы между инструкциями

Все написанные в мобильном Бейсике программы начинают исполнение исходного кода с первой строки, затем последовательного продвигаясь по строкам вниз. В некоторый момент может понадобиться пропустить часть строк и перейти на какую-то другую, выделенную строку. Такой переход может быть безусловным или, если он осуществляется при помощи оператора If, условным. Поскольку допустимо не указывать в начале строк их номера, то для операции переходов между строками необходимо иметь определенный механизм маркировки выделенной строки, на которую выполняется переход. Такой механизм существует и реализуется он методом проставления уникальных меток у всех выделенных строк. Метка всегда начинается с буквенного символа от A до Z (далее могут быть любые буквенно-цифровые символы и символы подчеркивания) и завершается символом двоеточия ":". За меткой в строке более не должна находиться ни одна инструкция. Все они пишутся на следующей строке, сразу после метки. Переход на выделенную строку осуществляется из любого места программы командой Goto, указав сразу за ней наименование метки (двоеточием завершать имя метки уже не нужно). Вот пример использования метки:
startLabel: Input "Введите число больше 0: ", A% If (A% <= 0) Then GotostartLabel Print "Вы ввели число " Str$(A%) Goto startLabel
Еще существует команда Gosub, за которой также указывается имя метки. Но в этом случае осуществляется не безусловный или условный переход, а вызов так называемой подпрограммы -отделенного от основной программы участка кода, после исполнения которого управление опять возвращается на следующую после команды Gosub инструкцию. Естественно, чтобы указать окончание кода подпрограммы, используется специальная команда, и пишется она как Return, в то время как команда окончания кода основной программы пишется как End.
Print "Вас приветствует" GosubprintName Print "Вот так вот!!!" EndprintName: Print "мобильный Бейсик" Return
Кроме этого имеются еще две команды, оперирующие метками. Одна -Restore, другая - Trap. Последняя команда указывает ту строку, на которую уйдет управление в случае возникновения непредвиденных алгоритмических ошибок, как, например, попытка деления на нуль, ошибки при работе с файлами или удаленными серверами и другие ошибки. Примечательно, что при помощи Trap можно определять совершенно разные помеченные метками так называемые обработчики ошибок. То есть для одного участка программы можно указать, что в случае возникновения ошибки управление получит обработчик с такой-то меткой, для другого участка программы - обработчик с другой меткой. Если на заданном участке программы нужно вообще запретить контроль ошибок, для этого предназначена конструкция Trap Off.
restart: Trap handleError Input "Введите имя: ", N$ Print "Спасибо вам, " N$ Trap Off...... End handleError: Print "Что-то введено неверно!" Goto restart
Кстати, коль уж в примерах употребляется команда Print, необходимо упомянуть сразу об одном нюансе. Дело в том, что команда Print на самом деле может использоваться только в отладочных целях в пределах среды разработки. В настоящий момент она просто не поддерживается мидлетами или Web-аплетами, сгенерированными в мобильном Бейсике. Вместо нее должна использоваться команда DrawString, отнесенная в раздел графических команд.

Графические команды

И чтоб уж не приводить чуть ли не всю родословную команд мобильного Бейсика, будем рассматривать только самые интересные игроделателям команды. А делать это будем блоками и весьма упрощенно, тем более что увлеченные программисты докопаются до невскрытых тонкостей быстро, и пальцами не успеют "моргнуть".
А начнем мы с графики, с нее, родной. Потому что в отсутствие таковой игры на мобильниках станут сродни игре "Хаммурапи". Современные игроки, поклонники "ласковых" DOOM-подобных персонажей, вероятно, не догадываются, что давным-давно их старшие товарищи рубились в эту "ужасно агрессивную" игру на символьных дисплеях прошлого века. Вот также без графики телефон годится только для клонов "Хаммурапи", а такие "страшилки" по определению нынешних игроков уже не прельстят. Итак, переходим к графическим командам.
Blit fromX, fromY, width, height, toX, toY -Копирует прямоугольную область экрана, определяемую координатами (fromX, fromY, width, height) в область с координатами (toX, toY). Эта команда может использоваться для выполнения прокрутки экрана. Например, нужно прокрутить экран на 1 линию влево:
W% = ScreenWidth() H% = ScreenHeight() Blit 0, 0, W%, H%, -1, 0
Cls - Очищает содержимое экрана.
DrawArc x, y, w, h, startAngle, arcAngle- Рисует дугу (или сектор круга) на экране. Команда принимает шесть аргументов, определяющих рисуемую на экране дугу. Дуга рисуется текущим установленным цветом.
DrawLine fromX, fromY, toX, toY -Рисует линию от точки с координатами (fromX, fromY) до точки с координатами (toX, toY). Линия рисуется текущим установленным цветом.
DrawTo x, y - Рисует линию от последней нарисованной точки до точки с координатами (x, y). Линия рисуется текущим установленным цветом.
DrawRect x, y, w, h - Рисует на экране прямоугольник с координатами (x, y) и шириной и высотой (w, h). Прямоугольник рисуется текущим установленным цветом.
DrawRoundRect x, y, w, h, arcWidth, arcHeight - Рисует на экране прямоугольник со скругленными углами, а величина скругления задается параметрами (arcWidth, arcHeight). Прямоугольник рисуется в координате (x, y), его ширина и высота задается через (w, h). Цвет прямоугольника равен текущему установленному цвету.
DrawString string, x, y - Печатает строку текста (string) на экране в координате (x, y). Строка печатается текущим установленным цветом. Данная команда заменяет команду Print, которая в настоящий момент не поддерживается при генерации мидлетов и Web-аплетов, хотя Print нормально выполняется в пределах среды разработки.
FillArc x, y, w, h, startAngle, arcAngle -Рисует сплошную, то есть заполненную внутри дугу (или сектор круга) на экране. Команда принимает шесть аргументов, определяющих рисуемую на экране дугу. Дуга рисуется текущим установленным цветом.
FillRect x, y, w, h - Рисует на экране сплошной, то есть заполненный внутри прямоугольник с координатами (x, y) и шириной и высотой (w, h). Прямоугольник рисуется текущим установленным цветом.
FillRoundRect x, y, w, h, arcWidth, arcHeight - Рисует на экране сплошной, то есть заполненный внутри прямоугольник со скругленными углами, а величина скругления задается параметрами (arcWidth, arcHeight). Прямоугольник рисуется в координате (x, y), его ширина и высота задается через (w, h). Цвет прямоугольника равен текущему установленному цвету.
IsColor ( ) - Возвращает единицу, если телефон поддерживает цветной экран, иначе возвращает нуль. Функция вызывается без входных параметров, но скобки должны быть обязательно.
NumColors ( )- Возвращает количество цветов (или оттенков серого), доступных на экране телефона. Функция вызывается без входных параметров, но скобки должны быть обязательно.
Plot x, y - Рисует точку в координате (x, y). Точка рисуется текущим установленным цветом.
Repaint- Выполняет обновление (перерисовку) экрана. Можно производить последовательно много изменений экрана и спрайтовых перемещений, но все они не будут отображены на экране до тех пор, пока не будет выполнена команда Repaint. Удобно располагать эту команду в конце основного цикла по прорисовке элементов экрана. Очень важно помнить, что если программист забыл выполнить эту команду, все графические изменения не будут отображены на экране телефона.
SetColor red, green, blue -Устанавливает текущий цвет, используемый в дальнейшем другими графическими командами. Этот цвет считается текущим до тех пор, пока он не будет заменен новым значением этой же командой. Компоненты цвета (red, green, blue) - все три -целочисленные операнды в пределах от 0 до 255 включительно. Программисту необходимо заранее определять, поддерживает ли мобильный телефон цветной экран, проверяя результат функции IsColor(). Если телефон не поддерживает цвет, тогда значение цвета должно быть задано в оттенках серого при помощи эквивалентных значений для компонентов (red, green, blue).
ScreenHeight ( ) - Возвращает высоту экрана мобильного телефона в точках. Функция вызывается без входных параметров, но скобки должны быть обязательно.
ScreenWidth ( ) - Возвращает ширину экрана мобильного телефона в точках. Функция вызывается без входных параметров, но скобки должны быть обязательно.
StringHeight ( string )- Возвращает высоту строки указанного текста (string) в точках. Это функция, поэтому входной параметр указывается в скобках.
StringWidth ( string ) - Возвращает ширину строки указанного текста (string) в точках. Это функция, поэтому входной параметр указывается в скобках.

Спрайтовые команды

От графических команд переходим к их логическому продолжению -командам работы со спрайтами. Под спрайтами понимаются плоские кусочки изображений (нередко с прозрачными фонами), накладываемые на основное изображение и свободно перемещаемые по нему. В результате создается ощущение анимации. Таким простым образом ранее в играх создавались анимированные персонажи. Они прямо как настоящие двигаются по игровому полю, но на самом деле это двигаются над картинкой игрового поля самые обычные спрайты с нарисованными на них кадрами анимации персонажей.
DrawGel gelName, x, y- Рисует графический элемент (gelName) прямо на экране в координатах (x, y). Команда может использоваться для имитации "живого" фона под спрайтами.
GelLoad gelName, gelData- Создает графический элемент с указанным именем (gelName) и загружает в него графические данные из строки (gelData). Параметр gelName - это имя, которое будет ассоциировано с созданным графическим элементом, а параметр gelData - это строка, содержащая RAW-данные изображения в формате, приемлемом для телефонов. Как правило, это PNG-, GIF-или JPEG-данные. То есть предполагается, что содержимое gelData будет использоваться для отображения доступных в Интернете изображений.
Программа должна открыть канал для ресурса и прочитать его побайтно, добавляя каждый байт в строку с помощью функции Chr$. Как только данные будут прочитаны, они далее передаются в параметре gelData для преобразования строки в изображение.
Важно: Графические изображения могут занимать много места и способны привести к ошибкам переполнения памяти в мобильных телефонах. Как обычно, размер графических файлов уменьшают степенью сжатия. Да только реальный размер изображения внутри телефона все равно остается равным несжатому изображению. Поэтому наилучшим решением будет уменьшение физического размера (ширины и высоты) картинки до размеров экранного разрешения мобильного телефона. К примеру, несжатая JPEG-картинка 100x100 пикселей потянет за собой около 40 килобайт памяти. Такая же картинка с разрешением 300x300 пикселей - около 360 килобайт.
GelLoad gelName, resourceName- Как и предыдущая команда, эта команда создает графический элемент с указанным именем, но загружает в него графические данные из файла (resourceName), находящегося в списке ресурсов.
Графические элементы могут быть загружены из PNG-, GIF- или JPG-файлов. Причем такие типы файлов поддерживаются не всеми устройствами. Например, PNG-файлы поддерживаются абсолютно всеми мобильными телефонами, однако можно также обнаружить, что и GIF- и JPG-изображения тоже поддерживаются довольно широко, хотя и не везде. И все же если необходимо, чтобы программа безотказно работала на максимальном количестве телефонов, лучше остановиться на PNG-формате.
Если конечной целью является Web-аплет, тогда может понадобиться использовать GIF-формат, так как некоторые браузеры используют старую версию Java и не поддерживают PNG-изображений. Для добавления PNG-, GIF- или JPG-изображений в разрабатываемый проект необходимо выбрать элемент меню "Resources", щелкнуть кнопку "Add Resource" и затем найти необходимые к добавлению файлы.
Команда GelLoad принимает две строки - внутреннее имя графического элемента в программе и имя ресурса. Имя ресурса всегда такое же как имя файла, кроме пути к файлу. Так, если в список ресурсов добавлен "c:\Images\MyImage.gif", его можно загрузить в мобильном Бейсике следующим образом:
GelLoad "GelName", "MyImage.gif"
GelGrab gelName, x, y, w, h- Создает графический элемент с указанным именем (gelName) и загружает в него графические данные, взятые из прямоугольника на экране с координатами (x, y, w, h). Графические элементы сопоставляются со спрайтами командой SpriteGel. К тому же графические элементы могут быть свободно нарисованы прямо на экране при помощи команды DrawGel.
GelHeight ( gelName )- Функция возвращает высоту указанного графического элемента в точках.
GelWidth ( gelName )- Функция возвращает ширину указанного графического элемента в точках.
SpriteGel spriteName, gelName-Связывает указанный спрайт (spriteName) с заданным графическим элементом (gelName). Если такой спрайт еще не существует, автоматически создается новый спрайт. Спрайтовая анимация может быть достигнута сопоставлением (связыванием) спрайта с различными графическими элементами. Так, например, если в цикле вызывать данную команду, сопоставляя одному и тому же спрайту каждый раз разные графические элементы, то на экране этот спрайт будет также в цикле менять свое графическое содержимое. Кроме того, спрайт можно перемещать по экрану командой SpriteMove. Столкновения между спрайтами могут определяться функцией SpriteHit.
SpriteHit ( spriteName1, spriteName2 )-Возвращает единицу, если два указанных спрайта перекрываются своими "телами" (набежали друг на друга), или возвращает нуль, если спрайты не перекрываются. Причем нужно помнить, что данная функция не тестирует непосредственно столкновения пикселей двух спрайтов, как это делается в более продвинутых системах при прозрачных фонах у спрайтов.
SpriteMove spriteName, x, y-Перемещает спрайт с заданным именем (spriteName) в новое местоположение с координатами (x, y).
SpritePriority spriteName, prior-Устанавливает приоритет (prior) указанного спрайта (spriteName). Чем выше приоритет спрайта, тем выше он находится над остальными низкоприоритетными спрайтами. Фактически, приоритет - это слой, на котором находится спрайт. Когда спрайты начинают двигаться по экрану, то, наблюдая общую картину как бы сверху, можно отметить, что набегающий высокоприоритетный спрайт постепенно закрывает своим "телом" нижний (низкоприоритетный) спрайт, будто в глубину экрана имеется пространство. Соответственно, спрайт с низким приоритетом находится глубже, а спрайт с высоким приоритетом - выше, то есть ближе к экрану. Однако это не трехмерный эффект и глубина здесь имеет формальное значение. Размер отображаемого спрайта не зависит от его приоритета, таким ухищрением лишь просто определяется, какой из спрайтов будет просматриваться лучше, если спрайты набегают друг на друга.

Команды карт и плиточных изображений

Карты и плиточные изображения создаются в соответствующих интегрированных редакторах. Карта представляет собой матрицу плиточных изображений, располагающихся в заданных ячейках карты. Соответственно, плиточное изображение - это небольшая картинка, при разложении таких картинок по ячейкам карты получается некоторое подобие игровой карты, причем у карты заведомо ячеистая структура, а все плиточные изображения по карте имеют одинаковый пиксельный размер.
MapCreate nx%, ny%, cellWidth%, cellHeight%- В большинстве случаев карты будут создаваться во встроенных в среду редакторах, литочных изображений, 512-767 - к ошибкам ввода-вывода, 768-1023 - к ошибкам форм, 1024-1279 - к звуковым ошибкам. Вот некоторые коды ошибок с описанием их значения:
0 - Внутренняя ошибка 1 - Попытка деления на нуль 2 - Выход за пределы данных 3 - Неверные данные 4 -Предварительно не выполнена команда Restore 5 - Неверный индекс строки 6 - Неподдерживаемый системный вызов 7 - Неверное числовое значение 8 - Неверный код операции 9 - Неверная строка с плавающей запятой 10 - Неверное отрицательное значение 11 - Не хватает памяти 256 - Неверный спрайт (ошибка возникает при попытке использовать спрайт, не сопоставленный с графическим элементом) 257 -Неверный графический элемент 258 -Неверная ячейка 259 - Неверное плиточное изображение 260 -Неверный файл карты 261 - Неверный файл плиточного изображения 262 -Неверный файл графического элемента (в общем случае ошибка возникает при загрузке GIF- или JPG-изображений на телефоны, не поддерживающие эти форматы) 512 - Ошибка ввода-вывода 513 -Неверный канал 514 - Такой канал уже открыт 515 - Такой канал еще не открыт 516 - Неверный режим открытия файла 517 - Невозможно открыть файл 518 -Неверный канал для произвольного доступа (то есть канал сопоставлен с файлом, для которого не доступен произвольный доступ) 768 - Неверный тип предупреждения 769 - Такая форма уже открыта 770 -Такая форма еще не открыта 771 -Неверный режим даты и времени 772 -Неверное максимальное значение 773- Форма не завершена 774 -Некорректный элемент 1024 - Тональные сигналы не поддерживаются 1025 - OTT-звуки не поддерживаются 1026 - WAV-звуки не поддерживаются (ошибка генерируется при воспроизведении WAV-файлов на устройствах, не поддерживающих этот формат, или при воспроизведении WAV-файла в Web-аплете) 1027 - AU-звуки не поддерживаются (такие звуки поддерживаются только Web-аплетами) 1028 - Невозможно загрузить звук
Заключительное резюме по программным возможностям

Таков самый интересный с точки зрения игроделателя программный потенциал мобильного Бейсика. Остальные команды, а их тоже очень много, рассматривать не имеет смысла, поскольку они в общем случае должны быть известны мало-мальски подготовленному программисту. Это и команды ядра языка - циклы, обработки условий, выражения, - и команды преобразования типов, и обработка строковых значений, и работа с массивами, и математика, и работа с датой и временем - секунды, часы, дни и так далее, - и прочие возможности. Детальнее о них можно узнать из поставляемой в комплекте справочной системы, правда, на беду она исполнена в английском варианте. В принципе, важные вещи уже изложены здесь, до остального нетрудно дойти самостоятельно, поэкспериментировав на досуге. Тем более что в комплект входят несложные примеры, среди которых даже есть пара простейших игр.
По большому счету вполне оправданный интерес могут вызвать и команды манипуляции формами, особенно при разработке телефонных приложений офисного плана. На сегодняшний день работа с формами в мобильном Бейсике, конечно, далека от совершенства в сравнении с компьютерными аналогами, однако, как известно, лиха беда начала. Если подобные возможности будут востребованы, а они непременно станут таковыми под давлением прогресса, мобильный Бейсик со временем, думается, обзаведется полным арсеналом упомянутых средств. В нынешней вариации предоставляются только такие элементы на форме: Gauge, Image, List, Text и Time, в дополнение к чему еще и форме позволяется иметь собственное меню, опять же при желании формируемое программно.
Ну а если программист умеет действительно "шевелить мозгами", то нет ничего удивительного, если даже до момента выхода новых элементов формы программист будет пользоваться непредусмотренными элементами собственного изготовления. Например, в отсутствие элемента типа таблицы с ячейками такой элемент можно сварганить из подручных средств, если заставить себя чуть-чуть подумать. Команды работы с картами - это такие же удобные команды работы с ячейками таблицы, а плиточные изображения в ячейках карты стоит только заставить изображать содержимое ячеек таблицы, как все будет походить на самый взаправдашний Excel в миниатюре.
Продолжение темы читайте здесь, где рассматриваются технические вопросы работы со средой разработки телефонных приложений на основе мобильного Бейсика.

Дмитрий Сахань, 30 марта 2004 года
оригинал статьи тут https://aimatrix.nm.ru/computer/MobileBASIC2.htm

DimonVideo
2008-11-03T13:49:01Z

Здесь находятся
всего 0. За сутки здесь было 0 человек

Комментарии 11

Яндекс.Метрика