Основываясь на ваш комментарий на вашем оригинальный вопрос я underst и что это вопрос семантики.
С точки зрения игрока, плата не является матрицей, как вы подразумевали, это просто прямая линия, которая случается, чтобы «телепортировать» игрока после последней позиции (16 * 4 = 64) на первая позиция.
И с точки зрения GameEngine речь идет о преобразовании позиции на линии в ячейку на границе матрицы.
Таким образом, укажите, что ваш объект GamePiece
имеет свойство position
, инициализированное 0.BoardGame
имеет свойство boardSide
, инициализированное 16
, и другое имущество boardLength
что равняется boardSide * 4
.
Теперь, каждый раз, когда ваш плеер пытается двигаться, вы должны убедиться, что он не «упадет» с доски, а затем правильно позиционирует его на экране.
код будет так же, как это:
// When updating the game state
private void move(GamePiece piece, int spaces) {
int destination = piece.position + spaces;
if (destination >= BoardGame.boardLength) {
destination -= BoardGame.boardLength;
}
piece.position = destination;
}
// When updating the game view
private void updateView() {
(...)
// Considering you store the game pieces on the gamePieces collection
for (GamePiece p: gamePieces) {
int side = Math.floor(p.position % BoardGame.boardSide); // Either 0, 1, 2 or 3
switch (side) {
case 0: // Top
// Place Piece method takes: the piece, the X position and the Y position
BoardGame.placePiece(p, BoardGame.boardSide - p.position, 0);
break;
case 1: // Right
break;
case 2: // Bottom
break;
case 3: // Left
break;
}
}
(...)
}
P.S .: я сейчас много в спешке и не может закончить код правильно. Надеюсь, это поможет, но я вернусь позже и попытаюсь закончить его.
Не знаете, в чем ваш вопрос. У вас есть объекты, перемещающиеся по этим массивам? Вы отслеживаете позиции этих объектов внутри или снаружи? Что происходит? – Kon
Непонятно, что вы пытаетесь сделать здесь. – Jokab
Извините, я не уточнил, что хорошо, Да, я хочу, чтобы объекты перемещались по массиву. Но изобразите 2-й массив, как настольная игра Monopoly. Я отслеживаю там внутренние позиции там класса «GamePiece». Класс «BoardGame» управляет фрагментами и устанавливает их местоположения. Я просто не знаю, как реализовать правило, чтобы, если игрок попадает в космос [0] [16], как я могу сказать, чтобы он начал двигаться вниз к [1] [16]. –