Сейчас у меня есть объект Board, который содержит двумерный массив 8x8 (сетка, как я его называю), а фигуры представлены целыми числами 1/2, и я использую побитовую операцию, чтобы пометить фигуру как короля.
У меня также есть объект Checkers, который обрабатывает рендеринг доски и щелчки пользователя на холсте и т. д. Объект Checkers имеет метод Draw, который просто перебирает сетку на объекте Board для создания графического представления доски. Таким образом, при каждом вызове Draw() доска перерисовывается и позиции фигур пересчитываются.
Теперь я хочу добавить анимацию. Один из способов, которым я смог добиться этого, состоит в том, чтобы отслеживать самое последнее перемещение (координаты источника и пункта назначения XY), а затем запускать процедуру Draw()
с заданным интервалом, а процедуру Draw()
проверять, часть, которую он собирается нарисовать, совпадают с координатами, записанными в переменной назначения предыдущего хода, и соответствующим образом корректирует положение фигуры.
Хотя это работает, я считаю, что это немного грязно.
Альтернативная модель, с которой я экспериментировал, заключалась в том, чтобы использовать объекты для частей вместо целых чисел, а затем я мог записывать координаты пикселя X Y на части и обновлять их после каждого движения (или в цикле анимации). Это я также нашел беспорядочным, и мне не понравилось, как мой объект платы теперь был привязан к логике рендеринга.
Может ли кто-нибудь с опытом в этой области предложить лучший способ сделать что-то?
Стоит отметить, что я использую один и тот же класс Board на стороне сервера (NodeJS), поэтому в идеале я хотел бы, чтобы класс Board был идентичен как на клиенте, так и на сервере, чтобы гарантировать, что ходы, сделанные и проверенные клиентом, никогда не будут отклонены. сервером.