43

Как я движущиеся кубики делал

примерно год назад, когда я взялся учить java и программирование под android, попалась мне такая вот игрушка в гуглплей -

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


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


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


прошел год. java core и ооп на норм уровне и решил я еще раз попробовать это дело. сперва пошел я в гуглмаркет искать подобные приложения. нашел аж с десяток, попутно выяснив, что автор оригинала - молодой парень с украины.


вот такой симпатишный деревянный дизайн нашел, например:

и вот такой не очень симпатичный, имхо:

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


все выше конечно имхо, ну и исходя из этого стал ваять свою игрушку. вот тогда я и почувствовал всю силу ооп. описать имеющиеся объекты, распределить по классам и прописать их взаимодействия оказалось не так сложно, как может показаться начинающему программисту. использованы конструкции джава: Thread, Enum, HashMap, Deque, InputStream/OutputStream. ну эт так уточнение для специалистов.

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


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

приложение есть в гуглплей. мне не очень понятно что тут на пикабу с рекламой, потому ссылку не привожу. кому интересно можете написать на почту ssk29@yandex.ru - дам ссылку.


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


занимайтесь тем, что вам интересно) всем пис)

Вы смотрите срез комментариев. Показать все
5
Автор поста оценил этот комментарий

У тебя с дизайном не лучше.
Хоть бы игровое поле отрисовал да спрайты по-интереснее =\

А что касается разбавки - можно сделать какую-нибудь расшифровку. Мол, в течении 10 уровней прокладываешь маршрут через специальную клеточку и получаешь кучку пикселей. В конце эти кучки собираются в картинку. Или что-нибудь в этом роде.

раскрыть ветку (7)
2
Автор поста оценил этот комментарий

не было цели сделать супердизайн, я не дизайнер и не фотошопер. была цель сделать норм функционал

раскрыть ветку (6)
2
Автор поста оценил этот комментарий

Да ладно тебе - много дизайна там и не нужно.
Даже эта пятиминутка из пеинта уже выглядит лучше.

Иллюстрация к комментарию
раскрыть ветку (2)
2
Автор поста оценил этот комментарий

кхм, ну я не считаю что она лучше выглядит) по кр мере непонятно как это на игровом поле будет с остальными элементами

там судя по профилю ты 3д графикой занимаешься, по этому по своей теме едешь. нарисуй симпатишные квадраты сделаю с ними версию)

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Не, я по своему профилю очень плохо 3D графикой занимаюсь)
У меня чувство стиля хромает =\
Но одно я знаю точно - тёмный фон и белый текст это круто сразу по трём причинам:

1. Это очень хорошо отвлекает от белых страниц интернетов, в которых так любят торчать современные дети.
2. Это выглядит свежо и ново практически всегда, оставаясь при этом максимально функциональным. Чёрный позволяет совмещать много ярких и приятных глазу цветов таким образом, что бы эти цвета не сливались, а форма жёстко выделялась.
3. Это экономит заряд батареи.

Рисовать ничего не буду. Я и за деньги-то не всегда помогаю). Так что я так, только диванное мнение предоставляю)
Любая хуйня может быть красивой. Для этого нужно потрудиться, но оно того стоит.

2
Автор поста оценил этот комментарий
Но обосрать конкурентов успел
раскрыть ветку (2)
1
Автор поста оценил этот комментарий

приведи цитату где я обсирал конкурентов в плане дизайна

раскрыть ветку (1)
Автор поста оценил этот комментарий
))))
Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку