Для начинающих
[16]
С этих статей вырасли все, кто сейчас программирует на MP. Именно с этих статей надо начинать новичку, качество у них не всегда хорошее, но почитать стоит.
|
Разбираем.Обьясняем
[1]
В этой категории обьясняем, разьясняем библиотеки,примеры,мидлеты и т.д.
|
Прочее
[4]
Прочее, что не касается программирования: как настроить MP, что нужно для работы и др...
|
Главная » Статьи » Midlet Pascal » Разбираем.Обьясняем |
ВНИМАНИЕ! ДАННЫЙ МАНУАЛ ОБЬЯСНЯЕТ РАБОТУ С LIb_ARCADE!!! Перед созданием игры нужно прежде всего понять, что каждая игра состоит из собственно игрового мира и персонажей, которые передвигаются по этому игровому миру. Для начала поговорим об игровом мире. Практически во всех играх игровое пространство представляет собой прямоугольник, состоящий из множества повторяющихся картинок (спрайтов). Другими словами представьте, что весь игровой мир можно нарисовать на листочке в клеточку. Тогда весь мир будет прямоугольником из M столбцов и N строк. Ну а в каждой клетке изображена какая-то маленькая часть игрового мира. Усвоили? Ну тогда приступаем к работе. Для начала нам потребуются спрайты(картинки) с изображением частей нашего игрового мира. У меня уже была такая готовая картинка под рукой и я буду использовать её, а вы можете нарисовать собственную. Мой набор спрайтов выглядит так: Ну а вы можете нарисовать что-то на своё усмотрение, главное чтобы спрайты были квадратными (хотя честно говоря и это не обязательно, но для простоты условимся, что все наши спрайты будут квадратными). Количество и расположение спрайтов в файле может быть произвольным. Формат файла: сохраните в двух экземплярах в форматах PNG (для использования в самой игре) и BMP. Зачем это нужно - позже поймете. Для начала нужно создать новую карту. Для этого нажимаем: Поясню что тут нужно вводить: http://mobilepascal.ru/load/2-1-0-193 Когда вдоволь нарисуетесь и уровень нашей будущей игры будет наконец готов, приступим к сохранению нашего шедевра. Для этого нажимаем на кнопку: Вы можете добавить кадров и намного больше и красивее. Я в вас нисколько не сомневаюсь. Code Program ArcadeDemo; Uses arcade; Var x, y, score, key: integer; p: boolean; Procedure DrawAll; begin SetColor(0, 0, 0); FillRect(0, 0, GetWidth, GetHeight); // Очистка экрана CenterCell(x, y); // Центрируем карту относительно главного героя DrawMap; // Отрисовываем карту DrawSprite(0); // Отрисовываем героя NextFrame(0); // Следующий кадр для героя SetColor(255, 255, 255); DrawText('SCORE: ' + score, 3, 3); // Рисуем количество очков Repaint; p:=false; // Сброс флага отрисовки end; Function Step(dx: integer; dy: integer): boolean; // Тут у нас проверка можно ли ходить в эту клетку begin Step:=true; if ((dx < 1) or (dy < 1) or (dx > 23) or (dy > 23)) then Step:=false; else begin if (GetCell(dx, dy) > 3) then Step:=false; end; if (GetCell(dx, dy) = 3) then score:=score+100; // Если это алмаз, то прибавляем очки end; Begin NewMap(24, 24, LoadImage('/s1.png'), 40, 40); // Создаем новую карту LoadCSV('/1.CSV'); // Загружаем файл с картой x:=1; y:=1; // Начальные координаты героя score:=0; // Очки пока равны нулю AddSprite(LoadImage('/hero.png'), 40, 40); // Загрузка спрайтов главного героя SpritePosition(0, GetWidth/2- 20, GetHeight/2- 20); // Устанавливаем позицию куда выводить спрайт p:=true; // Это флаг того нужна ли перерисовка экрана While(true) do // Бесконечный цикл begin if (p) then DrawAll; key:=KeyToAction(GetKeyClicked); if (key = GA_LEFT) then if (Step(x - 1, y)) then begin x:=x-1; p:=true; SetCell(x, y, 1); end; if (key = GA_RIGHT) then if (Step(x + 1, y)) then begin x:=x+1; p:=true; SetCell(x, y, 1); end; if (key = GA_UP) then if (Step(x, y - 1)) then begin y:=y-1; p:=true; SetCell(x, y, 1); end; if (key = GA_DOWN) then if (Step(x, y + 1)) then begin y:=y+1; p:=true; SetCell(x, y, 1); end; Delay(50); end; End. | |
Просмотров: 4250 | Комментарии: 2 | Рейтинг: 5.0/3 |
Всего комментариев: 2 | |
| |