Добро пожаловать на MidletPascal - а теперь еще скоро и Android и Iphone...
Авторизироваться
Меню сайта
Категории раздела
Для начинающих [16]
С этих статей вырасли все, кто сейчас программирует на MP. Именно с этих статей надо начинать новичку, качество у них не всегда хорошее, но почитать стоит.
Разбираем.Обьясняем [1]
В этой категории обьясняем, разьясняем библиотеки,примеры,мидлеты и т.д.
Прочее [4]
Прочее, что не касается программирования: как настроить MP, что нужно для работы и др...
Наш опрос
Стоит ли на нашем сайте публиковать мобильные новости?
Всего ответов: 175
Мини-чат
200
Статистика

Онлайн : 1
Гостей: 1
Пользователей: 0
Главная » Статьи » Midlet Pascal » Для начинающих

Рисование простых фигур, и вывод картинок на экран.
Как известно, что игрушка без графики эт вовсе не игрушка :). В каждой игре обязательно есть своя графика, ну как же без неё. Сегодня научимся как выводить графику на экран с помощью MIDlet Pascal. В MIDlet Pascal есть свои процедуры и функции рисования. Например: drawRect - рисует обычный прямоугольник, fillEllipse - рисует закрашенный эллипс. 
Давайте попробуем что нибудь нарисовать :). К примеру научимся рисовать прямоугольник. 
Пишем код на Паскале: 

Program draw; 
Begin 
DrawRect(10,10,60,40); 
Repaint; 
Delay(5000); 
End. 


Вот вам простая программка которая рисует на экран черный прямоугольник. А вот так мы задаем координаты отрисовки прямоугольника процедурой DrawRect: первый 10 - это координата по оси Х, т.е. от левой стороны экрана, второй 10 - это координата от верхней стороны экрана. Вот этой координатой мы получили первую точку которая расположится по координате (10; 10). Здесь всё в пикселах. Двумя последними точками задается вторая координата (60; 40) - эта наша вторая точка. Таким образом мы получили прямоугольник. Здесь ничего сложного. Если например взять листок и карандаш и начертить сначала две точки, например 1-ю точку вверху, а вторую пониже и сдвинуть чуть вправо и ещё провести от них вертикальные и горизонтальные линии, то тоже получится прямоугольник :). То же самое в MIDlet Pascal. В МР так же есть процедура рисуюящая закрашенный прямоугольник, который вызывается процедурой FillRect. Он рисуется так же как и DrawRect, но в отличие от него он закрашенный. 
Например, это удобно когда нужно вывести всплывающее окно, показывающее например "Ты выиграл!" 
Вот пример вывода закрашенного прямоугольника с текстом (код на Паскале): 

Program draw; 
Const text = 'Hello, world!'; 
Begin 
SetColor(0,0,200); 
FillRect(0,50,128,70); 
SetColor(255,255,255); 
DrawText(text,15,55); 
Repaint; 
Delay(5000); 
End. 


Тут выведется прямоугольник синего цвета в котором будет написано "Hello, world!" белыми буквами. Вот вам и пример всплывающего окна. И кстати про новые процедуры: SetColor - эта процедура устанавливает цвет чего либо. Например чтобы закрасить прямоугольник то нужно процедуру SetColor вызвать перед процедурой рисования закрашенного прямоугольника, т.е. так: 

SetColor(0,255,255); 
FillRect(10,10,100,50); 


Цвет задается в RGB формате, т.е. смешиванием красного, зеленого 
и синего цветов или вот так SetColor(красный,зеленый,синий); 
Причём придел задается целым числом в диапазоне от 0 до 255 (SetColor(255,0,164);). Если вы не знаете код какого нибудь цвета, то скачайте себе приложение Master Color .
И ещё одно служебное слово const. Это слово применяется для объявления констант, т.е. не изменые значения. Константу изменить программой никак нельзя, для этого есть переменные. К примеру мы записали в константу строку "привет ", И всё, теперь эту строку нельзя изменить в течении программы так как константа разрешена только для чтения. Опять же запишем константу "привет" и присвоем ей имя "name", т.e. так: 

const name = 'привет'; 
Теперь чтобы прочитать данные константы мы должны использовать имя константы "name". Например что бы опять вывести на экран значение константы мы можем использовать процедуру DrawText(name,0,0); думаю что немного поняли :-). 
А теперь попробуем вывести изображение на экран мобильного. Нажмите на значек зеленого "+" и выберите add Image (или как там у вас :)) введите имя вашей картинки, например "image" и нажмите ок. После этого откроется редактор графики. Нарисуйте любую картинку. Кстати картинки сохраняются в формате *.png (Portable Network Graphics). Теперь напишем код вывода изображения на экран (код на Паскале): 

Program graph; 
Begin 
DrawImage(LoadImage('/image.png'),0,0); 
Repaint; 
Delay(5000); 

End.

Тут процедура DrawImage рисует изображение, а функция LoadImage загружает изображение из jar-файла. Я советовал бы выводить вашу картинку через через переменную, так как этот способ будет работать быстрее, эффективнее, одним словом - без тормозов. Вот пример (код на паскале): 

Program graph; 
var img: image; 
Begin 
img:=LoadImage('/image.png'); 
DrawImage(img,0,0); 
Repaint; 
Delay(5000); 
End. 

Вот таким образом лучше выводить изображения. 
Теперь попробуем написать типа заготовки под игрушку :). Итак, создаем два изображения с именами: kosmos, korabl. Изображение с именем kosmos делаем размером 128 х 160 и нарисуем там фон космоса (планеты какие-нибудь,звезды) :), а изображение с именем korabl сделаем размером 18 х 18 и нарисуем там какой нибудь летающий корабль или какое нибудь НЛО. Эти изображения должны быть в формате png обязательно. 
Теперь напишем код (код на паскале): 

Program game; 
Var img, img1: image; // здесь наши картинки 
x, y: integer; // объявляем координаты корабля :) 
Begin 
x:=50; // начальные координаты кораблю, ось х 
y:=60; // ось у 
img:=LoadImage('/ko 
smos.png'); // загрузили из ресурса фон космоса :) 
img1:=LoadImage('korabl.png'); // ... и корабль 
Repeat // начинаем цикл 
Delay(50); // задержка 
if getKeyPressed = KE_KEY4 then x:=x-1; // если нажата клавиша 4, значит улетаем влево 
if getKeyPressed = KE_KEY6 then x:=x+1; // если 6, то летим вправо 
if getKeyPressed = KE_KEY2 then y:=y-1; // летим вверх если нажата клавиша 2 
if getKeyPressed = KE_KEY8 then y:=y+1; // вниз, если нажата 8, соответственно 
Drawimage(img,0,0); // помешаем наши картинки на экран 
DrawImage(img1,x,y); 
Repaint; // всё это отрисовываем 
Until getKeyClicked = KE_KEY0; // если нажмем 0, значит выйдем из приложения 
End. 

Ну вот и наша заготовка под игру готова :). Вы можете добавить в неё свои изменения и создать полноценную игру леталку :) 
В этой статье вроде бы всё пока ;-). 
Удачи в программировании! :)


Категория: Для начинающих | Добавил: 133_Mhz (25.01.2009)
Просмотров: 5165 | Комментарии: 4 | Рейтинг: 0.0/0
Всего комментариев: 4
04.10.2011 в 15:15 Спам
Написал прогу с космосом и кораблем , запускаю на телефоне пишет ошибка приложения, смотрю информацию там написано java/lang/verifyErorr : FW. Что это значит?
22.11.2010 в 17:40 Спам
Простите меня за то что я скажу далее, но как надоели нубы, которые из-за 1 ошибки готовы автора съесть с говном. Неужели так трудно исправить ошибку, когда компилятор ее показывает
19.05.2010 в 09:22 Спам
Код, написан неправильно! Когда тестирую на мобиле, белый экран и ничего более!
03.12.2009 в 22:32 Спам
В этой программе как минимум две ошибки!!!
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]