|
Введение
От переводчика Данный документ есть полный перевод официальной документации, распространяемой вместе с языком Omega Basic. Перевод выполнен с разрешения DigitalOmega.Net.
Omega Basic - простой в использовании, но достаточно мощный язык программирования. С его помощью можно создавать приложения для различных мобильных устройств, поддерживающих MIDP, в том числе для мобильных телефонов. Язык имеет простой синтаксический стиль, и не очень большой набор команд. Компилятор Omega Basic-а переводит вашу программу в оптимизированный JAVA код, который затем компилируется. При этом от вас не требуется никаких дополнительных действий. Вы просто нажимаете кнопку "Compile" и получаете рабочее приложение, которое можно запускать на телефоне. Благодаря тому, что используется java компилятор, написанные программы получаются 100% Java совместимыми и даже могут тягаться с программами, непосредственно написанными на Java.
Давайте еще раз перечислим достоинства Omega Basic-а:
- Нет никакой эмуляции, приводящей к потере скорости. Вы получаете на 100% совместимые с Java быстрые и профессиональные программы.
- Простой, но емкий язык.
- Язык достаточно богат и поддерживает работу с рисунками, спрайтами, звуком, картами, и многим другим ...
- Язык является расширяемым, то есть Вы можете создавать собственные команды.
- Поддерживается работа с сетью. Вы можете использовать 3 набора коммуникационных команд, включая мультиплеер.
- Для распространения своих программ, вы можете напрямую воспользоваться нашими услугами и получить немалую прибыль.
Установка Omega Basic-а
Процесс установки очень прост и включает в себя три шага:
- Установка Java SDK
http://www.dreams-in-motion.com/files_public/j2sdk-1_4_2_05-windows-i586-piftw. exe Эти файлы требуются для компиляции ваших проектов.
- Установка Mobile SDK
http://www.dreams-in-motion.com/files_public/j2me_wireless_toolkit-2_1- windows.exe Эти файлы понадобятся для того чтобы запускать приложения на эмуляторе и собирать пакеты, для телефона.
- Установка 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 Этот код выполняется если утверждение, стоящее за словом
REM If ложно (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 устанавливает синий цвет.
SetColor 0, 0, 255
REM С помощью следующий команды, выводим строку текста на экран.
DrawText "A quick drawing demo", 0, 0
REM Теперь давайте нарисуем несколько примитивов. Обратите
REM внимание, мы используем width, height для получение ширины
REM и высоты экрана.
DrawLine 0, 0, width, height
DrawRectangle 10, 10, 15, 15
DrawFilledRectangle 20, 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
|