суббота, 12 января 2013 г.

DOM- и SAX-подходы к парсингу XML.


Всем привет.

Как и обещал - расскажу свои мысли о парсерах.
В прошлый раз я тщательно расписывал, что же такое парсер. А в этот раз приведу лишь одну цитату. (Цитата является ссылкой на источник).


Мы будем решать конкретную задачу. У нас будет небольшая база данных, несколько астероидов. Для данного поста я максимально упрощу эту базу данных. Для каждого астероида будет указано: координата по Х, координата по У и время появления на экране. Вот картинка, которая иллюстрирует все вышесказанное:


По просьбе RedHunter выкладываю полный исходник проекта.

ВОТ ОН.


вторник, 8 января 2013 г.

Анонс

Готовлю пост о парсинге. Оказалось, что там много разных штуковин, есть разные парсеры для разных задач. Я пока не определился - что конкретно подойдет под мои задачи. Как решу - обязательно отпишусь здесь.

воскресенье, 6 января 2013 г.

Предисловие - обращение к читателю.

Всем привет.

Формат данного блога такой. Я делаю игру для Android, используя AndEngine.
В каждой следующей записи я развиваю уже существующий код.

У меня просьба к каждому, кто зашел сюда.
Если вам что-то непонятно в моих записях - обязательно сообщайте в комментариях  Даже если вам вообще ничего не понятно - тоже пишите в комментариях: что вы делаете, что не получается, какой результат должен быть в идеале.

Ну а если есть предложения\пожелания по оформлению блога - пишите их в комментарии к этому сообщению.

суббота, 5 января 2013 г.

Разбираем LevelLoaderExample.



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

Сначала я вкратце расскажу что такое парсер, зачем он нужен. Если вы знаете, то это - пропустите первую часть данного поста - до кода. Затем я вам представлю пример, как работает движковый парсер по задумке автора. А после этого поделюсь своими мыслями о том, почему мне НЕ нравится данный парсер и почему я хочу сделать свой.

среда, 2 января 2013 г.

Заканчиваем исследование партикл-систем.

Думаю, это последний пост про партикл-системы. Я нашел несколько интересных штук в движке и хотел бы ими с вами поделиться. В посте 3 основных вопроса:
1. Как улучшить, сделать красивее свою систему.
2. Что такое BatchedSpriteParticleSystem и стоит ли ее использовать.
3. Какие бывают эмиттеры.

Бонусом выкладываю вам для всеобщего использования файлик с частицами, которые я использую. Он не мой - он из движка HGE. Первая картинка - просто для удобства - она Jpeg. Качайте вторую себе - она PNG. Я везде пока использую третью слева в третьей строчке.


вторник, 25 декабря 2012 г.

Продолжаем обрабатывать столкновения. Плавим астероиды.

Всем привет. Огромное спасибо Евгению Shiler за то, что вернул меня в работу. В первой части данного поста выложу то, что уже сделано, а затем займусь оптимизацией.

За видео прошу прощения - снимал, чем мог. Чуть позже, возможно, переделаю.

воскресенье, 11 ноября 2012 г.

Рефакторинг кода. Продолжаем наводить порядок.


Я всегда так пишу программы. От частного к общему. Главная причина в том, что я заранее не знаю, куда иду. Ибо зачастую путь и есть цель. (О как!) Но многие вполне справедливо имеют право закидывать меня помидорами и сыпать не менее красивыми цитатами. (Вроде "Не зная куда идешь - придешь в никуда.") Что ж - у каждого своя голова на плечах. Но тот, кто прочитает мой блог и, возможно, будет копировать мой код - вместе со мной придет к моему рефакторингу.

Теперь ближе к делу. Есть у нас в игре пока два вида объектов. Герой и Астероид. И у них много общего. А потом появятся еще объекты, и под каждый пришлось бы писать код с нуля... если бы не рефакторинг, который мы сейчас и проведем! (Кода будет больше чем в предыдущих постах!)

пятница, 9 ноября 2012 г.

четверг, 8 ноября 2012 г.

Группа объектов. А добавим-ка астероидов.


Интересная особенность наследования:
public class Asteroids extends Entity implements GlobalConstants{ ...... };
Asteroids mAsteroids;
scene.attachChild(mAsteroids);
// метод attachChild принимает аргумент типа Entity, 
// и нет перегруженного метода, принимающего аргумент типа Asteroids!

среда, 7 ноября 2012 г.

Наводим порядочек - вынос части кода в отдельный файл.


Первое и главное, что я сделал - начал выносить код из одного файла в отдельные.
Так появился класс Hero. Пока в него попала только функция создания и движения.
Функцию движения чуток оптимизировал, чтобы при каждом проходе не создавать\убивать 4 int-переменные.

четверг, 4 октября 2012 г.

понедельник, 1 октября 2012 г.

Бэкграунд.


Научился добавлять бэкграунд в сцену. Хотя по сути я просто создал еще один спрайт. Главное - правильно пихать текстуры в конструкцию try-catch в загрузчике ресурсов.

воскресенье, 23 сентября 2012 г.

HelloWorld + просто спрайт на GLES2.


Сохраню-таки себе на память стартовый код. Почти что ХеллВорлдд, добавлен только 1 статичный спрайтик.

вторник, 4 сентября 2012 г.

Решение глюков SyntaxHighlighter для блога.


Столкнулся недавно с глюками SyntaxHighlighter. Вернее один глюк был давно и был малозначителен - боковой скроллбар у всех кодов. А вот недавно появился весьма неприятный глюк с нумерацией строк. Т.к. я полный нуб в веб-дизайне, мне пришлось потратить уйму времени на поиск вот такого костыля:
 
 
 
Это надо добавить перед вашим кодом в сообщении. Естессно, в HTML. Первая часть костыля решает проблему нумерации. Вторая убирает боковой скроллбар.

Возможно, как-то можно эти конструкции засунуть в HTML-шаблон блога и тогда они будут работать всегда и везде. Кто мне скажет как или хотя бы даст правильную (можно буржуйскую) ссылку - тот будет Человек с большой буквы.

UPD/ Опыт показал, что размещенный костыль действует на все сообщение целиком, его не надо вставлять перед каждым куском кода (если кусков в сообщении несколько)

вторник, 8 мая 2012 г.

(АРХИВ GLES1)Стрельба. (Создание и удаление множества однотипных спрайтов)

Для начала подготовим код для наших "пуль". Будут использованы анимированные спрайты. В моем случае это 8 кадров, каждый размером 32*32 пискела. При нажатии на любую область экрана из самолетика (из-под левого и правого крыла) - должна вылетать пара шариков плазмы. И лететь относительно быстро вверх по экрану. Должен быть некоторый счетчик выстрелов в секунду, разрешающий делать выстрелы не чаще, чем например 3 штуки в секунду. Конечно, улетевшие вверх, за область экрана, шарики - надо удалять из сцены.

вторник, 1 мая 2012 г.

(АРХИВ GLES1) Бэкграунд. Текст.

Здесь будет рассмотрено создание бэка и вывод текста.
На видео есть стрельба пульками, но этот вопрос будет рассмотрен позже.

воскресенье, 29 апреля 2012 г.

Проблемы перехода на GL ES 2

С декабря 2011 года в сети есть бета второй версии движка AndEngine.
Вот проблемы, которые возникли у меня при попытке перейти на эту версию.

воскресенье, 22 апреля 2012 г.

(АРХИВ GLES1) Создание спрайта. Перетаскивание вручную. Акселерометр.

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