Введение

От переводчика Данный документ есть полный перевод официальной документации, распространяемой вместе с языком Omega Basic. Перевод выполнен с разрешения DigitalOmega.Net.

Omega Basic - простой в использовании, но достаточно мощный язык программирования. С его помощью можно создавать приложения для различных мобильных устройств, поддерживающих MIDP, в том числе для мобильных телефонов. Язык имеет простой синтаксический стиль, и не очень большой набор команд. Компилятор Omega Basic-а переводит вашу программу в оптимизированный JAVA код, который затем компилируется. При этом от вас не требуется никаких дополнительных действий. Вы просто нажимаете кнопку "Compile" и получаете рабочее приложение, которое можно запускать на телефоне. Благодаря тому, что используется java компилятор, написанные программы получаются 100% Java совместимыми и даже могут тягаться с программами, непосредственно написанными на Java.

Давайте еще раз перечислим достоинства Omega Basic-а:

  1. Нет никакой эмуляции, приводящей к потере скорости. Вы получаете на 100% совместимые с Java быстрые и профессиональные программы.
  2. Простой, но емкий язык.
  3. Язык достаточно богат и поддерживает работу с рисунками, спрайтами, звуком, картами, и многим другим ...
  4. Язык является расширяемым, то есть Вы можете создавать собственные команды.
  5. Поддерживается работа с сетью. Вы можете использовать 3 набора коммуникационных команд, включая мультиплеер.
  6. Для распространения своих программ, вы можете напрямую воспользоваться нашими услугами и получить немалую прибыль.

Установка Omega Basic-а

Процесс установки очень прост и включает в себя три шага:

  1. Установка Java SDK
    http://www.dreams-in-motion.com/files_public/j2sdk-1_4_2_05-windows-i586-piftw. exe Эти файлы требуются для компиляции ваших проектов.
  2. Установка Mobile SDK
    http://www.dreams-in-motion.com/files_public/j2me_wireless_toolkit-2_1- windows.exe Эти файлы понадобятся для того чтобы запускать приложения на эмуляторе и собирать пакеты, для телефона.
  3. Установка Omega Basic
    http://www.digitalomega.net/files/setup.exe Установите Omega Basic в какую-нибудь папку. Инсталлятор попытается самостоятельно определить местоположение Java SDK и Mobile SDK, если он не правильно определит каталоги, введите их вручную.

Начало

Запустите редактор Omega Basic-а и с помощью кнопки "Load" откройте какой-нибудь демонстрационный проект. Попытайтесь самостоятельно освоить процесс сохранения проекта, поверьте - это не сложно. Настало время посмотреть, что делает открытый проект. Нажмите кнопку "Run". Проект будет откомпилирован и запущен на эмуляторе. Работа с эмулятором ничем не отличается от работы с телефоном. Если Вы хотите протестировать приложение на реальном устройстве, нажмите кнопку "Compile" и скопируйте файлы .jad и .jar, которые будут созданы в папке /bin/ вашего проекта, на телефон. Более подробно об этом будет рассказано ниже.

Регистрация

После покупки программы обязательно зарегистрируйте ее. Это позволит вам использовать все ее возможности. Чтобы зарегистрироваться, зайдите на страницу регистрации web сайта Dreams In Motion, и нажмите один раз кнопку run или compile в Omega Basic редакторе. Скопируйте код активации из файла 'Activate.txt' и вставьте его в соответствующее место на сайте. В результате Вы получите серийный номер, который нужно ввести в диалоговом окне, нажав кнопку register в редакторе.

Команды

if <условие> Then ... EndIf

Ключевое слово IF позволяет выполнять блок между словами Then и Endif, если условие выполняется. Например, если в следующем примере переменная a равна единице, будет выполнен code.

If a = 1 Then
  <code>
EndIf

Если к этой конструкции добавить словоELSE, то после него можно написать код, который будет выполняться, если условие не верно:

If a = 1 Then
  Этот код выполняется, если a равно 1 (a=1)
Else
  этот код выполняется, если a не равно 1 (a<>1)
EndIf

Если Вы хотите проверить несколько условий, используйте словоELSE IF

If a = 1 Then
  Этот код выполняется, если a равно 1
Else If a = 2
  Этот код выполняется, если a равно 2
Else If a = 3
 Этот код выполняется, если a равно 3
Else
  Этот код выполняется, все приведенные выше условия не верны
EndIf

Для того, чтобы организовать более сложные проверки, можете использовать ключевые словаAND (И) иOR (ИЛИ).

If (a = 1 or a = 3) and b = 2 Then
  Этот блок выполняется в случаях {a=1,b=2} и {a=3,b=2}
EndIf

While <условие> ... EndWhile

Цикл While выполняется до тех пор, пока условие не станет верным, или пока не встретится ключевое словоBREAK.

While a = 1
  code
EndWhile

Dim <variable> [= value]

Ключевое словоDIM используется для объявления новой переменной. В Omega Basic-е все используемые переменные должны быть предварительно объявлены. Это избавит вас от ошибок, связанных с опечатками в именах переменных. При объявлении переменной может быть присвоено значение.

Dim Temp
Dim myString$ = "Testing"
Dim myNumber = 100

Boolean <variable> [= value]

Ключевое словоBOOLEAN используется для создания булевых переменных, то есть переменных, которые могут принимать только два значения:TRUE (ИСТИНА) илиFALSE (ЛОЖЬ). Такие переменные удобно использовать в качестве флагов.

Boolean myBoolean
Boolean yourBoolean = True

Type <name$>
<code>
EndType

СтруктураTYPE используется для создания контейнера, который содержит информацию о входящих в него объектах, что помогает создать хорошо читаемый и организованный код. Между ключевыми словамиTYPE иENDTYPE должны находится строки декларации переменных. Создаваемая таким образом сложная структура данных называется пользовательским типом. После того, как новый тип объявлен с помощью ключевого словаDIM можно создать переменную этого типа. Имя этой переменной должно заканчиваться символом . чтобы получить доступ к внутренней переменной типа используйте точку '.': ПеременнаяТипа.ВнетренняяПеременная

Rem Создаем новый тип
Type myType
   Dim name$
   Dim health
   Dim attack
EndType

Rem Объявляем переменную этого типа
Dim spaceShipЈ = myType

Rem Присваиваем переменной MyValue значение внутренней переменной health.
MyValue = spaceShipЈ.health

Rem Присваиваем внутренней переменной name$ значение "John"
SpaceShipЈ.name$ = "John"

For <переменная> = <начальное значение> To <конечное значение> ... Next <переменная> [Step <шаг>]

ЦиклFOR используется для того, чтобы выполнить блок кода заданное число раз (определяемое начальным и конечным значениями переменной). После каждой итерации значение переменной увеличивается на единицу. Таким образом, переменная пробегает все значения от начального до конечного и может использоваться для внутри цикла. Кроме того, с помощью ключевого словаSTEP можно задать шаг цикла отличный от единицы. Шаг - это величина, которая прибавляется к переменной цикла после каждой итерации. Блок тела цикла ограничен ключевым словомNEXT, за которым идет имя переменной цикла.

For I = 0 To 10
  code
Next I

Этот код будет выполнен 11 раз.

Rem <комментарий>

Это ключевое слово очень важно. Оно позволяет вставлять комментарии в текст программы. Комментарии не выполняются и служат только для удобства чтения программы.

RemStart

RemEnd

Если комментарий занимает несколько строк, необходимо использовать эту конструкцию.

Function <имя$> ([<аргументы>]) ... EndFunction [<возвращаемая переменная>]

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

Function myFunction (name$, age)
  code
EndFunction

При создании проекта, появляется несколько предопределенных функций. Вы не должны их модифицировать.

ExitFunction [<переменная>]

Это ключевое слово завершает работу функции и возвращает значение.

Function myFunction (name$, age)
  Код
ExitFunction
  Этот код не будет выполнен
EndFunction

Print <текст>

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

Print "Текущее значение счетчика: " + Score

End

Это ключевое слово обозначает конец программы. Если программа встречает ключевое словоEND, она сначала вызывает функцию end, так что Вы можете проследить за правильностью завершения Вашего приложения.

Canvas <имя$> ... EndCanvas

Ключевое словоCANVAS используется для создания нового холста в памяти, готового для отображения. Холст (canvas) это как будто кусочек чистой бумаги; Вы можете рисовать на ней, используя различные инструменты (команды рисования, работы со спрайтами и картинками). Canvas довольно специфичная команда, она имеет собственный код для рисования, но весь код должен быть внутренним действием. Имя должно быть уникальным.

SetDisplay <form/canvas>

Это ключевое слово используется, для того чтобы связать экран устройства с формой или canvas-ом.

Alert <title$>, <text$>, <image>, <timeout>

Ключевое словоALERT Используется для вывода сообщения об ошибке в течение заданного времени. title$ - заголовок предупреждения, text$ - его текст, image - рисунок, который должен быть предварительно загружен, timeout - время в миллисекундах.

Listener <form/canvas>

Ключевое словоLISTENER позволяет форме или канвасу обрабатывать пользовательские события, такие как нажатие клавиш.

Mem.Flush

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

Button <имя$>, <текст$>, <позиция>

Ключевое словоBUTTON служит для создания в памяти кнопки, которую затем можно вывести на форму или canvas. Кнопка должна иметь уникальное имя, текст будет написан на кнопке, позиция определяет положение кнопки на экране. Если позиция равна нулю, то кнопка рисуется прикрепленной к левой стороне экрана, если единице - то к правой стороне, если любое число больше единицы, то кнопка будет отображаться как пункт меню.

Button myButton, "A Button", 0

Form <имя$>, <текст$>

Ключевое словоFORM служит для создания новой формы, на которую могут быть помещены компоненты интерфейса, такие как button и textbox. Имя должно быть уникальным, текст будет отображен в заголовке.

Form myForm, "A Form"

Textbox <имя$>, <заголовок$>, <текст_по_умолчанию$>, <тип>

Ключевое словоTEXTBOX используется для создания в памяти текстового блока, который можно потом разместить на форме. Имя должно быть уникальным, заголовок отображается слева от блока, текст по умолчанию будет содержаться в текстовом поле, пока Вы не введете туда свое значение. Текстовый блок может иметь один из следующих типов:
0 - Можно вводить любой текст
1 - Можно вводить только email адреса
2 - Можно вводить только числа
3 - Можно вводить пароль, все символы отображаются как '*'
4 - Можно вводить только телефонные номера
5 - Можно вводить только URL адреса

Textbox myTextBox, "Enter a value:", "Hello", 0

Label <имя$>, <заголовлк$>, <текст$>

Ключевое словоLABEL используется для создания "этикетки" в памяти устройства. Ее потом можно отобразить на форме. Имя должно быть уникально, заголовок отображается слева.

List <имя$>, <значение$>, <тип>

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

Button.Show <form/canvas>, <button>

Ключевое словоBUTTON.SHOW используется для отображения предварительно созданной кнопки на предварительно созданной форме/холсте.

Button.Show myForm, myButton

Button.Hide <form/canvas>, <button>

Ключевое словоBUTTON.HIDE используется для того, чтобы убрать существующую кнопку с предварительно созданной формы/холста.

Button.Hide myForm, myButton

List.Append <list>, <текст>

Это ключевое слово служит для добавления новой строки в предварительно созданный список с именем list.

List.Append myList, "Option 1"

Textbox.Show <form>, <textbox>

Ключевое словоTEXTBOX.SHOW используется для отображения предварительно созданного текстового блока на предварительно созданной форме.

Textbox.Show myForm, myTextBox

Form.Remove <form>, <номер>

Это ключевое слово служит для удаления элемента с указанным номером с формы. Номер представляет собой целое число.

Form.Remove myForm, 5

Try ... EndTry

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

Try
  code
  catch блок
EndTry

Catch <номер ошибки> ... EndCatch

Ключевое словоCATCH используется для создания обработчика ошибок. Это блок должен располагаться внутриTRY блока, ошибки которого он и будет обрабатывать. С помощью <номера ошибки> вы можете по разному реагировать на разные ошибки.

Try
  code
Catch IO
  code
EndCatch
EndTry

Action Paint() ... EndAction

Внутри блокаAction Paint() должны размешаться операции, связанные с рисованием. Фактическое их выполнение происходит при вызове ключевого словаREPAINT.

Canvas myCanvas()
  <code>
  Action Paint()
    <code>
  EndAction
  <code>
EndCanvas

Action Keypressed() ... EndAction

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

Canvas myCanvas()   <code>
  Action Keypressed()
    <code>
  EndAction
  <code>
EndCanvas

Action PointerDragged() ... EndAction

БлокPOINTERDRAGGED получает управление, когда происходит изменение состояния джойстика.

Canvas myCanvas()
  <code>
  Action PointerDragged()
    <code>
  EndAction
  <code>>
EndCanvas

Action Loop... EndAction

БлокLOOP используется для осуществления контроля за игровыми действиями. Код, расположенный внутри этого блока будет вызываться каждыеrate секунд. Внутри этого блока необходимо разместить ключевое словоREPAINT, для перерисовки экрана.

Canvas myCanvas()
  <code>
  Action Loop()
    <code>
  EndAction
  <code>
EndCanvas

File <Имя файла>

Ключевое словоFILE используется для открытия файла для чтения или записи. Данные в файл сохраняются последовательно.

File "/Test.txt"

File.Close

Это ключевое слово используется для закрытия открытого файла. Если файл не был открыт, вызов это команды приведет к ошибке.

File.Close

File.Delete <filename>

Эта команда удаляет существующий файл. Попытка удалить несуществующий файл приведет к ошибке.

File.Delete "/Test.txt"

File.Write <string>

Эта команда используется для записи строки в конец открытого файла. Если файл не открыт, будет сгенерировано сообщение об ошибке.

File.Write "Hello, this is a test"

File.Read()

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

Temp$ = File.Read()

Value$ = File.Read (<record>)

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

Value = File.Exist(<filename>)

КомандаFILE.EXIST проверяет существование файла. Она возвращает TRUE, если файл существует и FALSE - в противном случае.

Sound <filename>, <number>

Эта команда используется для считывания звукового файла в слот памяти и подготовки его к воспроизведению. Принимается формат WAV, number - целое число от 1 до 9.

Sound.Load "/MySound.wav", 1

Sound.Delete <number>

Эта команда служит для удаления звукового файла из слота памяти. Все неиспользуемые файлы должны удаляться. Это позволит сэкономить память.

Sound.Delete 1

Sound.Play <number>

Эта команда служит для проигрывания звукового файла из указанного слота. (всего 9 слотов).

Sound.Play 1

Sound.Loop <number>, <amount>

Эта команда используется если звуковой файл требуется проиграть несколько раз. В number передается номер слота, а в amount - число повторов. Если amount=0, то файл будет проигрываться бесконечно.

Sound.Loop 1,5

Sound.Stop <number>

Это команда останавливает воспроизведение файла из указанного слота.

Sound.Stop 1

Midi <filename>

Это команда используется для загрузки MIDI файла в память для воспроизведения его в дальнейшем. Расширение файла должно быть mid. Одновременно может быть загружен только один MIDI.

Midi "/MyMidi.mid"

Midi.Delete

Эта команда удаляет(если надо, то сначала останавливает) MIDI файл из памяти.

Midi.Delete

Midi.Play

Команда служит для проигрывания загруженного в память MIDI файла.

Midi.Play

Midi.Loop <amount>

Команда служит для циклического воспроизведения MIDI файла. amount - число повторов. При amount=0 файл проигрывается бесконечно.

Midi.Loop 5

Midi.Stop <number>

Команда используется для остановки проигрывания MIDI файла

Midi.Stop

Image <name$>, <filename>

КомандаIMAGEиспользуется для загрузки изображения из указанного файла в переменную name$. Имя переменной должно быть уникальным.

Image myImage, "/Flower.png"

Sprite <name$>, <image>

Эта команда используется для создания спрайта на основании указанного изображения. image - переменная, содержащая изображение. name$ - уникальное имя спрайта.

Sprite mySprite, myImage

Sprite.Animation <name$>, <image>, <width>, <height>

SPRITE.ANIMATION используется для создания анимированного спрайта на основании изображения image. name$-уникальное имя анимированного спрайта; width, height - ширина и высота спрайта Размер изображения image должен быть таким, чтобы в него укладывалось целое число спрайтов.

Layer <columns>, <rows>, <image>, <height>, <width>

Эта команда используется для разбиения изображения image на тайлы, которые потом используются при создании черепичного заднего плана игры. Переменные columns и rows определяют сколько тайлов надо создать из изображения image. Height и width определяют высоту и ширину отдельного тайла.

Layer 3, 3, myImage, 20, 20

Layer.FillCell <x1>, <y2>, <x2>, <y2>, <imagenumber>

Эта команда используется для рисования тайла в некоторой части экрана, определяемый прямоугольник с координатами x1, y1 и x2, y2.

Layer.FillCell 0, 0, 4, 4, 1

Layer.Update

Эта команда обновляет схему слоя, гарантируя правильное ее отображение.

Layer.Update

Layer.Paint

LAYER.PAINT рисует все слои на экране.

Layer.Paint

Sprite.Move <sprite>, <x>, <y> , [index]

Эта команда двигает спрайт с его текущей позиции на указанное значение x и y.

Sprite.Move mySprite, 1, 0

Sprite.Position <sprite>, <x>, <y> , [index]

Эта команда перемещает существующий спрайт в указанную позицию.

Sprite.Position mySprite, 10, 15

Sprite.Rotation <sprite> , <angle> , [index]

SPRITE.ROTATION используется для поворота спрайта на углы 0, 90, 180 или 270 градусов.

Sprite.Rotation mySprite, 0

Sprite.Mirror <sprite>, <angle>, [index]

Эта команда служит для отражения спрайта на значение angle, которое может быть равно 0, 90, 180, 270.

Sprite.Mirror mySprite, 90

Sprite.Sequence <sprite>, <list>, [index]

Команда используется для задание последовательности кадров анимированного спрайта. Спрайт должен быть предварительно создан, а список list содержать существующие номера спрайтов.

Sprite.Sequence mySprite, 1, 2, 4, 2, 6, 5

Sprite.Next <sprite>, [index]

SPRITE.NEXT используется для создания анимации. С помощью этой команды изменяется на следующий отображающийся в данный момент кадр спрайтовой последовательности.

Sprite.Next mySprite

Sprite.Previous <sprite> , [index]

Это ключевое слово используется для изменения кадра спрайта на предыдущий.

Sprite.Previous mySprite

Sprite.SetFrame <sprite>, <frame> , [index]

SPRITE.SETFRAME устанавливает отображающийся кадр.

Sprite.SetFrame mySprite, 2

Repaint()

REPAINT используется для вызова перерисовки экрана.

Repaint()

Cls

Команда используется для очистки готового к рисованию экрана.

Cls

SetClip <x1>, <y2>, <x2>, <y2>

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

SetClip 0, 0, width, height

где width и height -ширина и высота экрана.

SetColor <red>, <green>, <blue>

Эта команда используется для задания текущего цвета для операций рисования. Значения параметров могут принимать значения от 0 до 255.

SetColor 0, 100, 255

SetGrey <greyscale>

Эта команда устанавливает цвет чернил для черно-белых экранов. Цвет может принимать значения от 0 до 255.

DrawLine <x1>, <y2>, <x2>, <y2>

DRAWLINE рисует линию на экране от точки (x1,y1) до точки (x2,y2).

DrawLine 0, 0, 25, 25

DrawRectangle <x1>, <y2>, <x2>, <y2>

Команда рисует пустой прямоугольник.

DrawRectangle 0, 0, 25, 25

DrawFilledRectangle <x1>, <y2>, <x2>, <y2>

Команда рисует закрашенный прямоугольник.

DrawFilledRectangle 0, 0, 25, 25

DrawRoundRectangle <x1>, <y2>, <x2>, <y2>, <mincurve>, <maxcurve>

Команда рисует пустой прямоугольник со скругленными углами. Скругление задается параметрами mincurve и maxcurve.

DrawRoundRectangle 0, 0, 25, 25, 45, 90

DrawRoundFilledRectangle <x1>, <y2>, <x2>, <y2>, <mincurve>, <maxcurve>

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

DrawArc <x1>, <y2>, <x2>, <y2>, <angle1>, <angle2>

Эта команда рисует дугу между точками x1, y1 и x2, y2 с углами angle1 и angle2.

DrawFilledArc <x1>, <y2>, <x2>, <y2>, <angle1>, <angle2>

Эта команда рисует заполнений сектор между точками x1, y1 и x2, y2 с углами angle1 и angle2.

SetPoint <x>, <y>

Эта команда перемещает курсор в точку x, y

SetPoint 15, 45

DrawStyle Dotted

Эта команда задает стиль линии. Все линии будут рисоваться в виде набора отдельных точек

DrawStyle Solid

Эта команда задает стиль линии. Все линии будут сплошными

Image.Draw <image>, <x>, <y>

IMAGE.DRAW выводит рисунок image из точки x, y.

Image.Draw myImage, 15, 15

Sprite.Draw <sprite> , [index]

SPRITE.DRAW Выводит спрайт на экран

Sprite.Draw mySprite

DrawText <text$>, <x>, <y>

Эта команда рисует текстовую строку текущем фоном на экране.

DrawText "Hello", 15, 0

Font <face$>, <style$>, <size$>

Эта команда используется для задания параметров фонта всего выводимого на экран текста. Параметр face может принимать значения MONO, PROP или SYSTEM; параметр style - BOLD, ITALIC, UNDERLINED или PLAIN; параметр size - SMALL, MEDIUM или LARGE.

Image.Width (<image>)

Эта команда возвращает ширину рисунка image.

Value = Image.Width ( myImage )

Image.Height (<image>)

Эта команда возвращает высоту рисунка image.

Sprite.Width (<sprite>)

Команда возвращает ширину спрайта sprite.

Sprite.Height (<sprite>)

Команда возвращает высоту спрайта sprite.

Sprite.PosX (<sprite>)

Команда возвращает текущую координату x спрайта sprite.

Sprite.PosY (<sprite>)

Команда возвращает текущую координату y спрайта sprite.

Sprite.Frame (<sprite>)

Команда возвращает текущий кадр спрайта sprite.

Sprite.Collision (<sprite1>, [<index>], <sprite2>, [<index>], <pixelLevel>)

SPRITE.COLLISION позволяет определить столкнулись ли спрайты sprite1 и sprite2. Если столкнулись, возвращается значение true, иначе - false. Если спрайты имеют тип массива, вы должны указать на конкретный элемент параметром index. pixelLevel - булевая переменная определяющая тип проверки столкновения. Если она установлена в true, будет применен точный, но медленный метод проверки.

Value = Sprite.Collision ( mySprite, myOtherSprite, true )

Mappy.Load <Filename>

команда служит для загрузки карты из файла и ее подготовки к рисованию

Mappy.Load "/Test.fmp"

Замечание. Файл карты может оказаться достаточно большим. Возможно вам понадобиться уменьшить размер карты.

Mappy.Draw

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

Mappy.SetX <Xpos>

MAPPY.SETX устанавливает текущее координаты X текущей карты. Эта команда используется для перемещения по карте, если ее размер превышает размер экрана.

Mappy.SetX 10

Mappy.SetY <Xpos>

MAPPY.SETY устанавливает текущее координаты Y текущей карты. Эта команда используется для перемещения по карте, если ее размер превышает размер экрана.

Value = Mappy.BlockFlag ( <Layer> , <X> , <Y> , <Flag> )

MAPPY.BLOCKFLAG возвращает специфическое значение, установленное при задании тайла на текущем слое Layer в позиции X, Y. Значение параметра flag - это ID флага для чтения.

Value = Mappy.BlockFlag ( 0, 2, 5, 1 )

Value = Mappy.BlockImage ( <Mlayer>, <X>, <Y>, <Layer> )

MAPPY.BLOCKIMAGE возвращает ID рисунка, на главном слое в позиции X, Y. Параметр Layer - блок слоев, он должен принимать значения от 0 до 4.

Value = Mappy.BlockImage ( 0, 2, 5, 0 )

Video.Start

Это команда подготавливает устройство к воспроизведению видео данных.

Video.End

Эта команда используется для завершения работы с видео системой и освобождения ресурсов.

Video.Show

Команда выводит изображение с камеры на экран

Video.Hide

Команда прячет экран камеры

Video.Image <image>

Команда производит копирование текущей картинки камеры в указанное изображение

Video.Image myCapturedImage

Value = Video.HasCamera

VIDEO.HASCAMERA позволяет определить, оснащен ли телефон камерой. Если да, то возвращается значение true

Value = Video.Capture

VIDEO.CAPTURE позволяет определить возможно ли получить картинку с камеры. Если команда возвращает true, то вы можете использовать картинку с камеры; если false - возникли какие-то проблемы.

Net.Image <image>, <url>

Команда используется для загрузки рисунка из интернета. Эта команда не производит сохранение загруженного изображения на устройство.

Net.Image myImage, "Http://www.mysite.com/myimage.png"

Net.Download <url>, <filename>

Команда используется для скачивания файла из Интернета и сохранения его в файл filename. В URL может быть указан файл любого типа. Вы должны сами следить за размером загружаемого файла и соответствием формата загружаемого файла и параметра filename.

Net.Download "Http://www.mysite.com/myimage.png", "myDownloadedImage.png"

Net.LoadImage <image>, <filename>

NET.LOADIMAGE загружает скачанный файл картинки в image, для его дальнейшего использования в программе. Поскольку Net.Download не следит за типом загружаемых файлов, вся ответственность за несоответствие форматов лежит на Вас.

Net.LoadImage myImage, "myDownloadedImage.png"

Net.GetText (<url>)

NET.GETTEXT соединяется с текстовом файлом в интернете и закачивает его содержимое на телефон. В дальнейшем Вы можете открыть скачанеый файл.

Net.GetData (<url>)

NET.GETDATA используется для возврата вывода ASP или PHP страницы. Это позволяет организовать взаимодействие с простыми страницами или передавать данные. Параметр url может содержать внедренные переменные GET запроса для PHP или ASP страниц.

Comm.Send <port>, <value$>

Команда посылает строку на существующий порт другого устройства.

Comm.Send 1, "Hi, this is raw socket communication"

Value = Comm.Available

COMM.AVAILABLE выполняет две важные функции. Команда возвращает номера доступных для использования коммуникационных портов в виде массива целых чисел. Полученные значения можно использовать в команде Comm.GetPort.

Value = Comm.GetPort <port>

COMM.GETPORT возвращает текстовое представление указанного порта. Номер порта - одно из чисел, возвращаемых командой Comm.Available.

Value$ = Comm.GetString <port>

Команда возвращает данные, посылаемые указанному порту

Success = Server.Connect <ip$>, <port>

Ключевое слово SERVER.CONNECT используется для соединения с Omega Server. ip$ и port$ - это ip адрес и номер порта вашего сервера. В случае успешного соединения команда возвращает 1, иначе - 0.

Connected = Server.Connect "192.168.0.1", 9800

Server.Disconnect


SERVER.DISCONNECT используется для отключения от Omega сервера


Server.Send <value$>

SERVER.SEND посылает строку value$ Omega серверу. Перед использованием этой команды убедитесь, что есть соединение с сервером.

Server.Send "H, ths beng sent through the Omega Server"

Value$ = Server.Receive()

SERVER.RECEIVE используется для получения данных от Omega сервера. Данные возвращаются в виде строки формата '@Room@Name:' а затем данные.

MyStrng$ = Server.ReceveLast()

Внимание! Использование 3D значительно повышает требования, предъявляемые к телефону. Применение следующих команд сделает невозможным выполнение вашей программы на телефонах не поддерживающих 3D. При компиляции проекта Вы получите соответствующее предупреждение.

3D.Start

Эта команда разрешает рендеринг 3D сцены. За этой командой должны следовать только команды 3D. Конец сцены должен быть обозначен командой 3D.End.

3D.End

Эта команда обозначает окончание 3D рендеринга и позволяет использовать дальше не 3D команды.

3D.Render

Производит рендеринг 3D мира на экран

3D.Render myWord

3D.Clear

Удаляет все содержимое видео порта

3D.ResetLights

3D.RESETLIGHTS сбрасывает все источники света текущей сцены.

3D.SetLightColor <light>, <hex>

Команда используется для установки цвета источника света.

3D.PrepareTexture <image>

Команда используется непосредственно перед нанесением текстуры на объект или группу объектов. Она переводит рисунок в формат, пригодный для применения в качестве текстуры.

3D.Fog <LINEAREXPONENTIAL>

3D.FOG используется для создания эффекта тумана. Аргумент указывает на тип тумана

3D.Fog EXPONENTIAL

3D.Fog.Off

Команда выключает эффект тумана.

3D.SetCameraRotation <camera>, <xAngle>, <yAngle>, <zAngle>

3D.SETCAMERAROTATION Поворачивает камеру на заданные углы вокруг осей.

3D.SetViewPort <x>, <y>, <width>, <height>

Команда устанавливает видео порт на экране, куда будет рендриться сцена.

3D.SetBackgroudColor <hex>

Команда устанавливает цвет заднего плана.

3D.SetBackgroundImage <image>

Команда устанавливает рисунок в качестве заднего плана.

Другие команды

Null()

Используется для проверки существования (инициализации) переменной или массива.

Timer()

Команда возвращает текущее системное время в миллисекундах.

Mem.Free()

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

Mem.Total()

Команда показывает сколько всего памяти на устройстве.

Rnd (<minValue>, <maxValue>)

Эта команда генерирует случайное число в указанных пределах.

Textbox.GetValue <textbox>

Команда используется для получения контекста указанного окна.

List.GetValue <list>

Возвращает название выбранного в настоящее время пункта меню.

List.GetSelected <list>

Возвращает номер выбранного в настоящее время пункта меню.

Len (<value$>)

Команда возвращает длину указанной строки.

Left (<value$>, <length>)

Команда возвращает подстроку, состоящую из length первых символов строки value$.

Right (<value$>, <length>)

Команда возвращает подстроку, состоящую из length последних символов строки value$.

Mid (<value$>, <start>, <end>)

Команда возвращает подстроку из строки value.

Abs (<value>)

Команда возвращает модуль числа value.

Min (<value>, <value>)

Команда возвращает наименьшее из двух чисел.

Max (<value>, <value>)

Команда возвращает наибольшее из двух чисел.

Trim (<value$>)

Команда удаляет пробелы в начале и в конце строки.

Index (<value$>, <pattern$>)

Команда возвращает номер, соответствующий первой встретившейся подстроке pattern в строке value.

Width()

Команда возвращает ширину графического холста (canvas).

Height()

Команда возвращает высоту графического холста (canvas).

GetKey()

Возвращает нажатую клавишу. Эту команду надо использовать в блоке KeyPressed.

LastKey()

Команда возвращает время в миллисекундах, которое прошло момента нажатия клавиши.

UpKey()

Команда возвращает true, если была нажата кнопка "вверх". Эту команду надо использовать в блоке KeyPressed.

DownKey()

Команда возвращает true, если была нажата кнопка "вниз". Эту команду надо использовать в блоке KeyPressed.

LeftKey()

Команда возвращает true, если была нажата кнопка "влево". Эту команду надо использовать в блоке KeyPressed.

RightKey()

Команда возвращает true, если была нажата кнопка "вправо". Эту команду надо использовать в блоке KeyPressed.

SelectKey()

Команда возвращает true, если была нажата кнопка "select". Эту команду надо использовать в блоке KeyPressed.

ClearKey()

Команда возвращает true, если была нажата кнопка "clear". Эту команду надо использовать в блоке KeyPressed.

StartKey()

Команда возвращает true, если была нажата кнопка "start" (*). Эту команду надо использовать в блоке KeyPressed.

PoundKey()

Команда возвращает true, если была нажата кнопка "решетка" (#). Эту команду надо использовать в блоке KeyPressed.

Скорая помощь.

FAQ

На какое разрешение экрана стоит рассчитывать свои приложения? Мой эмулятор настроен на 180x177, но насколько мне известно разрешение экрана сильно отличается у разных телефонов.

Разрешение экрана зависит от модели телефона. Поэтому, прежде чем браться за разработку, стоит провести некоторое предварительное исследование. Эмулятор использует наиболее распространенное в настоящее время разрешение.

Стоит ли мне разрабатывать приложение, рассчитанное на разные разрешения экрана или лучше для каждого телефона выпускать отдельный релиз?

Использование динамически меняющегося размера экрана достаточно эффективный прием, однако, если Вы хотите охватить весь рынок, Вам все равно придется выпускать несколько релизов.

Какой размер должно иметь мое приложение?

В принципе в настоящее время можно смело писать на все 500kb, однако чем компактнее Ваше приложение, тем лучше.

Какой звуковой стандарт нужно использовать в своих программах?

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

Omega Basic объектно ориентированный язык?

Нет Omega Basic не является объектно ориентированным, но генерируемый им Java код естественно является объектно ориентированным.

Могу я редактировать рисунки?

Нет, пока это не возможно.

Как я могу определить, что кнопка не нажата?

Чтобы определить нажата ли клавиша, используйте команду LastKey(). Если возвращаемое число больше нуля, то клавиша не нажата.

Поиск неисправностей

Я нажимаю Editor.exe, но ничего не происходит.

Этому может быть несколько причин.
1). Редактор использует 'config.cfg', чтобы определить где расположены редактор и компилятор. Убедитесь, что этот файл содержит корректную информацию.
2). Файлы могли быть удалены или повреждены. Попробуйте переустановить Omega Basic.

Ошибки при компиляции

Первом делом стоит обратить внимание на сообщения об ошибках в коде. Если предупреждений не было, возможно:
1). В файле 'config.cfg' содержится некорректная информация и Omega Basic не может найти требуемые файлы. Убедитесь, что 'config.cfg' содержит корректную информацию.
2). Возможно это ошибка в Omega Basic-е. Пришлите в нашу службу поддержки полный текст программы и снимок окна редактора.

Мой серийный номер не принимается

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

Процесс Java генерирует ошибку

Omega Basic генерирует 100% Java совместимый код. Вероятно в Omega Basic-е есть ошибка. Пришлите нам свой код и мы постараемся устранить проблему. Мы гарантируем секретность вашего кода.

Проблемы с эмулятором

Эмулятор не является частью Omega Basic-а. Посетите web сайт компании Sun для получения информации о неполадках в эмуляторе.

Приложение 1 - Пример простейшего кода

Переменные Integer, String и Boolean
REM Создадим целочисленную переменную myInt
Dim myInt
REM Присвоим ей значение
MyInt=99
REM Создадим строковую переменную myString,
REM и присвоим ей значение прямо в процессе создания.
Dim myString$="This is my string!"
REM Создадим булевую переменную myBoolean.
REM Такие переменные могут принимать значенияtrue илиfalse
Boolean myBoolean
If...Then...EndIf
REM Ветвление. Ниже проверяется значение переменной myInt.
REM Если переменная меньше100, то есть если утверждение,
REM стоящее за словомIf истинно(true), выполняется блок после слова Then.
If myInt<100 Then
REM Этот код выполняется если значение переменной myInt меньше ста.
MyBoolean=True
MyString$="Переменная меньше 100"
Else
REM Этот код выполняется если утверждение, стоящее за словом
REMIf ложно(false). Если значение переменной myInt больше
REM или равно ста, выполняется этот блок.
MyBoolean=False
MyString="Переменная больше 100"
EndIf
For и Print
REM Давайте напечатаем значение переменной myString
REM столько раз, сколько содержит переменная myInt.
REM Воспользуемся для этого цикломFor. Этот цикл применяется
REM когда известно число требуемых повтором. На каждом витке цикла
REM значение переменной цикла(I) увеличивается на единицу.
For I=0 To myInt
REM Этот код будет выполнен myInt число раз.
Print myString$
Next I
While и End
REM Если число повторов заранее не известно, и цикл нужно
REM выполнять, пока истинно какое-нибудь условие, используется
REM блок'while...endwhile' is used.
Dim myOtherInt=0
While myOtherInt< myInt
REM на каждом витке проверяется условие'myOtherInt < myInt'.
REM если оно не выполняется, выходим из цикла
REM Увеличиваем значение myOtherInt на1
myOtherInt= myOtherInt+1
EndWhile
End

Приложение 2 - Работа с компонентами

REM Итак, давайте создадим новую форму. Форма- это своеобразный
REM контейнер, который может включать в себя разнообразные
REM компоненты пользовательского интерфейса, таких как кнопки, поля
REM ввода текста, списки и т.д. Если Вы хотите, чтобы форма
REM реагировала на действия пользователя, вы должны использовать
REM команду Listener.
Form myForm,"This is my form"
Listener myForm
REM Давайте создадим кнопку и разместим ее на форме.
Button myButton,"Do Something",0
Button.Show myForm, myButton
REM Добавим также текстовое поле для ввода пароля..
Textbox myTextBox,"Password:","",3
Textbox.Show myForm, myTextBox
REM Теперь, когда мы завершили формировать содержание формы,
REM мы можем отобразить ее на экране.
SetDisplay myForm

Приложение 3 - Работа с файлами

REM Прежде всего нужно очистить экран. Для этого используется
REM команда cls.
Cls
REM Теперь можно установить цвет"карандаша". При установке
REM цвета используется формат RGB. Каждая составляющая
REM может принимать значение от0 до255. Следующая строка
REM устанавливает синий цвет.
SetColor0,0,255
REM С помощью следующий команды, выводим строку текста на экран.
DrawText"A quick drawing demo",0,0
REM Теперь давайте нарисуем несколько примитивов. Обратите
REM внимание, мы используем width, height для получение ширины
REM и высоты экрана.
DrawLine0,0, width, height
DrawRectangle10,10,15,15
DrawFilledRectangle20,20,( width-20),(height-20)

Приложение 5 - Работа с изображениями и спрайтами

REM Поддержка работы с изображением и спрайтами позволяет
REM создавать мощные графические приложения. Для использования
REM изображения, его необходимо сначала загрузить. Для загрузки
REM используется команда image. Обратите внимание, в случае
REM возникновения ошибки будет напечатана строка"Error"
Try
Image myImage,"/myAlien.png"
Catch IO
Print"Error"
End
EndCatch
EndTry
REM После того, как изображение загружено, вы можете применять
REM различные команды для работы с ним. Возможно Вы захотите
REM создать на основании загруженного изображения спрайт.
REM Используйте команду'Sprite' для создания нового спрайта.
Sprite mySprite, myImage
REM Если рисунок подразумевает использование анимации, можете
REM воспользоваться'Sprite.Animation' чтобы указать, что спрайт
REM анимирован. Числовые аргументы: ширина и высота спрайта.
Sprite.Animation myAnimatedSprite, myImage,20,20
REM Если созданный вам спрайт должен отображаться несколько раз.
REM Например, Вы хотите создать эскадру вражеских кораблей, Вы
REM можете использовать команду'Sprite.Array', создающую массив
REM спрайтов. числовой параметр указывает число спрайтов. Затем
REM к каждому спрайту массива можно обращаться индивидуально.
Sprite.Array myArraySprite, myImage,10
REM Теперь Вы можете использовать команды для позиционирования,
REM смены, поворота спрайта. Следующая команда двигает спрайт
REM относительно текущей позиции.
Sprite.Move mySprite,1,0
REM команда поворачивает спрайт на90 градусов.
Sprite.Rotation mySprite,90
REM Используйте команду'Sprite.Draw', если хотите быть уверенны,
REM что спрайт отображается на экране.
Sprite.Draw mySprite

Перевод:aRix





Наши соцсети

Подписаться Facebook Подписаться Вконтакте Подписаться Twitter Подписаться Google Подписаться Telegram

Популярное

Ссылки

Новости [1] [2] [3]... Android/ iOS/ J2ME[1] [2] [3]) Android / Архив

Рейтинг@Mail.ru Яндекс.Метрика
MobiLab.ru © 2005-2018
При использовании материалов сайта ссылка на www.mobilab.ru обязательна