Как я движущиеся кубики делал
примерно год назад, когда я взялся учить java и программирование под android, попалась мне такая вот игрушка в гуглплей -
идея проста, но гениальна - для прохождения левела нужно все квадратики передвинуть на нужные местоположения, которые помечены кружками нужного цвета. при этом у кубиков задано направление движения и по тапу по кубику он двигается в определенном направлении. также кубики могут двигать друг друга. и позже добавляются клетки при прохождении которых кубик меняет направление движения.
уровней было немного и я их все быстро прошел. игра сильно понравилась, поскольку при минимум геймплея давала широкий простор для фантазии в плане придумывания заковыристых уровней, чтобы пройти которые не нужно быть семи пядей во лбу, достаточно логического мышления. в общем игра рассчитана на широкую аудиторию.
ну и после того как я научился рисовать кнопочки в андроид и заставлять их что-то делать задумал я создать такую игру. ну и не получилось. мышления в духе ооп (объектно-ориентированного программирования) еще не было и попробовал я это сделать в духе процедурного прогроммирования, один "божественный класс" где происходят все действия. в общем вскоре стало понятно что это бредовая затея и чтоб реализовать подобное нужно знать ооп и джаву.
прошел год. java core и ооп на норм уровне и решил я еще раз попробовать это дело. сперва пошел я в гуглмаркет искать подобные приложения. нашел аж с десяток, попутно выяснив, что автор оригинала - молодой парень с украины.
вот такой симпатишный деревянный дизайн нашел, например:
и вот такой не очень симпатичный, имхо:
поиграв в разные варианты вычислил слабые места многих приложений. в основном они были сделаны тяп-ляп лишь бы закинуть в гуглмаркет. у кого-то кубы уезжали за экран, у кого-то никак не отображалось, когда куб наезжал на клетку-дом или клетку-менятель_движения, у кого-то игровая площадь наглядно было поделена на квадраты вот как на примере выше, где-то кубы при тапе не постепенно переезжали куда надо, а просто исчезали и появлялись на новом месте. в общем в основном все это было некрасиво кошмарно и играть в такое не хотелось.
все выше конечно имхо, ну и исходя из этого стал ваять свою игрушку. вот тогда я и почувствовал всю силу ооп. описать имеющиеся объекты, распределить по классам и прописать их взаимодействия оказалось не так сложно, как может показаться начинающему программисту. использованы конструкции джава: Thread, Enum, HashMap, Deque, InputStream/OutputStream. ну эт так уточнение для специалистов.
в итоге удалось избежать всех недостатков выше - кубы плавно ездят по экрану, за экран не уезжают, все корректно отображается, есть отмена хода.
также заметил что многие уровни в таких играх построены схожим образом - в кучку на небольшом пространстве - обычно 4х4 клетки - три куба и три дома, несколько менятелей движений. ну и частенько там без особой логики только наобум можно догадаться как куда чего двигать. мне же было интересно создавать уровни на пространствах побольше 6х6 или 7х7 со многими менятелями движений и частыми взаимодействиями кубов, чтоб было интереснее думать. на скриншоте ниже уже моя игра, вот про примерно такие уровни говорю -
приложение есть в гуглплей. мне не очень понятно что тут на пикабу с рекламой, потому ссылку не привожу. кому интересно можете написать на почту ssk29@yandex.ru - дам ссылку.
ну и уже идет работа над второй частью игры) достаточно очевидно что просто двигать кубы быстро надоедает, потому раз в 10 примерно уровней думаю нужно вводить новые фишки - например клетки телепортации кубов, или непроходимая стена посреди игрового поля, или клетки которые меняют цвет куба, в общем большой простор для фантазии.
занимайтесь тем, что вам интересно) всем пис)








