Отчет #1

Отчет #1

От 0 до Google Play

Вот и пятница. Рабочая неделя хорошо началась, но закончилась не очень. По порядку.

Вторник 10.10

Продолжил работу над проектом во вторник, так как в понедельник не получилось выделить время на это. Самый продуктивный день выдался.

Сначала напомню, что до этой недели в игре самой игры не было, то есть, были только несколько окон (главное меню, поле игры и таблица рекордов).

Теперь в игре присутствуют фруктики (и немного ягод, так получилось).

Поле в начале игры теперь выглядит так:

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

Подготовка квадратов по заранее рассчитанным координатам
initField - подготовка фруктов, соответственно квадратам. drawField - отрисовывает фрукты на поле

Помимо этого я сделал то, о чем говорил в одном из отчетов ранее - добавил менюшку для поля игры. Теперь при нажатии кнопки "назад" на экране появляется такое окно:

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

Но проблему появилась просто из-за моей невнимательности, и решилась достаточно быстро и просто.

При выходе с игрового поля просто вызывается метод clearField, который очищает списки данных. Без этого действия они добавлялись в конец этого списка, и в итоге накладывались друг на друга при отрисовке.

Этим днем я доволен. Потратил около 4-5 часов на все. Много времени было потрачено на рисование фруктов и расчеты на бумаге. Методы класса были написаны достаточно быстро, но только благодаря предварительным расчетам

Среда 11.10

Для класса GameManager был добавлен метод makeTurn, который принимает два аргумента - координаты первого нажатия и координаты второго нажатия.

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

А как же проблемы?? Они были, но, опять же, по невнимательности, хех. Изначально я что-то напутал с координатами, из-за чего могли меняться местами фрукты с рандомных клеток, а вовсе не с тех, на которые нажимал игрок. Это исправил.

Дальше - в первой версии метода местами менялись координаты объектов, фруктов. НО! оба ArrayList'a связаны друг с другом индексами элементов. То есть, нулевой клетке соответствует нулевой фрукт, первой клетке - первый фрукт, и так далее. Я это не учел, поменял координаты, и из-за привязки по индексу фрукты двигались мистическим образом, но только при повторном изменении их позиций. При первом ходе каждый фрукт реагирует нормально, но потом непредсказуемо. Это тоже исправил.

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

Выглядит очень грязно, не так ли? :D

Чтобы считать обе координаты нажатия я придумал такой способ:

Есть флажок firstTurn. Если он true, значит берется первая координата. Если false, то вторая, и обе координаты отправляются в менеджер.

В итоге можно делать такое:

Ручная сортировка фруктов

И добавлю, пожалуй, небольшую гифку с "геймплеем" игры ;D

Четверг - пятница. 12.10 - 13.10

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

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

В общем, оба дня потратил на то, чтобы попытаться делать всё с текущим вариантом хранилища, и на поиск новых решений. Пока что безуспешно. Пока что не придумал более простого способа. Буду думать дальше.

Продолжаем путь от 0 до Google Play, встретимся в понедельник!

Report Page