Цитата
Делаю flash игру бродилку. Столкнулась с такой проблемой. Надо определять тип поверхности. Идет человечек по лесу с определённой скоростью, когда попадает на песчаную дорогу скорость уменьшается, а в воде он вообще тонет. Все эти территории на разных этапах игры разной формы.
MartaВ данном случае оптимально будет использовать ООП, но и в случае использования классических (не ООП) подходов, или например комбинированных, также можно решить данную задачу (сделав нужные функции).
В общем случае у тебя будет следующий алгоритм.
У всех типов поверхности есть параметры (свойства объёктов). Например сделаешь иерархию классов, главнный класс surface, а подкласс grass - его потомок. В главном классе задашь свойство (которое наследуют потомки) отвечающее за скорость. Но это не speed (т.е. не сама скорость), а коэффициент трения к примеру, специальный коэффициет. Который участвует в формуле расчёта скорости персонажа. И она будет динамически изменяться во время игры в зависимости от той поверхности, где находится персонаж.
К примеру задашь свойство koef.
В разных подклассах задашь разные значения: в grass = 1, в sand = 0.5 и т.д. (т.е. grass.koef = 1; sand.koef = 0.5).
И далее в игре в методе (или функции) отвечающем за определение поверхности будет определяться значение данного коефициента - через метод класса surface (и его потомков) getKoef или напрямую, если публик свойство. В общем случае код метода getKoef будет отдавать this.koef (значение коэффициента). Которое далее будет участвовать в функции установки скорости (по определённой формуле, где скорость будет прямо зависить от значения коэффициента). Т.е. на траве скорость будет равна 100%, на песке уже 50% (и так нужно будет задать для всех типов поверхности).