Основной задачей этого цикла - научить вас создавать с помощью OPL "профессиональные" приложения для Symbian OS. Мы напишем игру. В качестве отправной точки будем использовать знакомое Вам по предыдущему уроку приложение Event Core.


Мы будем проектировать логическую игру Master. За основу возьмем настольную игру Mastermind. Есть четырехцветный код, который вы должны угадать, делая предположения. Когда вы делаете предположение, Вы говорите, сколько правильных цветов находятся на правильных местах, сколько правильных цветов (которые присутствуют в конечном коде) не на правильных местах и скольких цветов нет в конечном коде. Вы должны сделать 10 предположений, и если после этого Вы не можете угадать код - Вы проиграли.

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

Как играть в Master

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

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

Пользовательский интерфейс

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

Вы должны определить, какие информационные панели будут постоянно находиться на экране (CBA кнопка справа, заголовок сверху и панель состояния слева). В нашем случае будут использоваться все три панели. Все настройки мы сохраним в ini файл (загружать их будем с помощью процедуры LoadINIFile:)

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

Задний план

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

Управление

В нашей программе будут использоваться 5 клавиш: стрелки вверх и вниз служат для перемещения по игровому полю; влево и вправо - для смены цвета фишки, пробел - для выбора варианта. У нас будет почти такое же как в Event Core меню. Мы добавим новый пункт, позволяющий устанавливать уровень сложности игры.

Уровень сложности

Простейшим способом увеличения сложности игры является увеличение числа фишек. Так для сложного уровня будем использовать 8 фишек, для среднего - 6, для легкого - 4.

Использование графики в OPL

OPL предоставляет в распоряжения программиста два базовых графических элемента: окно и рисунок. При их инициализации компьютер возвращает числовую ссылку. Я советую хранить эти ссылки в глобальном массиве. В программе Event Core для этих целей использовался массив id%(). 16 элементов будет более чем достаточно.

Окно (window)

Окно - это то место, куда Вы помещаете свои графические объекты. Ваше приложение может иметь несколько окон. Так, например, если вам нужно разделить экран на две независимые части, вы можете создать и вывести два окна.

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

id%(1)=gCREATE(0,0,640,200,K_Const_256Colours,1)
 

Первая пара параметров определяет положение левого верхнего угла окна в экранных координатах (точка 0,0 соответствует верхнему левому углу экрана). Следующая пара чисел задает ширину и высоту окна. В качестве пятого параметра передается системная константа, которая определяет доступное окну число цветов. Большинство коммуникаторов поддерживают более 4096 цветов, но нам вполне достаточно 256. Чем меньше цветов использует окно, том меньше памяти оно занимает.

Картинки (Bitmaps)

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

id%(9)=gLOADBIT("D:\System\Apps\Master\Master.mbm",0,3)
 

Последние два параметра очень важны. Они меняются в зависимости от файла. Первый параметр определяет режим открытия рисунка: 0 соответствует чтению, 1 - чтению и записи (используется в графических редакторах). Второй параметр указывает, какой рисунок из MBM файла Вы хотите загрузить. Нумерация рисунков начинается с 0.

Закрытие графических элементов

После того как Вы закончили работу с рисунком или окном, их необходимо закрыть. Разрабатывая приложения для коммуникаторов, следует очень бережно относиться к памяти.

gCLOSE id%(foo%)
 

При завершении приложения неплохо было бы убедиться в том, что все графические элементы удалены из памяти. Для этого в процедуру exit: нужно добавить цикл:

foo%=0
DO
foo%=foo%+1
TRAP gCLOSE id%(foo%)
UNTIL foo%=16
REM*** где16 число объявленных элементов в массиве id%
 

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

Копирование изображения из MBM в окно

Приведенная ниже команда копирует изображение из памяти в окно.

gUSE id%(1)
gCOPY id%(9),100,0,40,50,3
 

Первая команда (gUSE) указывает системе какое из окон является активным. При создании окна, оно автоматически становится активным, однако я рекомендую всегда использовать gUSE во избежание возможных проблем в будущем.

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


0 (Установка)


1 (Очистка)


2 (Инверсия)


3 (Замена)

Заключение

Итак, мы уже рассмотрели три важные темы. В следующий раз мы создадим MBM изображение и наконец-то приступим к программированию.




Наши соцсети

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

Популярное

Ссылки

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

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