Нужна помощь в перемещении объекта - PullRequest
0 голосов
/ 03 августа 2010

Мне нужны идеи о том, как перемещать объект (круг, представляющий робота в моем приложении).

Поверхность, по которой будет перемещаться объект, состоит из плиток BufferedImage из 3 строк и 3 столбцов (представлены в массивах).Все плитки одинаковы по размерам (160 х 160). 3-й ряд и 3-й столбец - это рельсовые пути, по которым должен двигаться объект.Это означает, что объект (робот) может двигаться горизонтально (вперед и назад) и вертикально (вверх и вниз).Плитка в позиции [2] [2] (пожалуйста, отсчитываю сверху., Так что верхний ряд будет 0, а следующий - 1 и т. Д.) - это пересечение, которое робот будет использовать для перехода к вертикальным направляющим рельсам илик горизонтальным направляющим рельсам.

Теперь моя проблема заключается в том, как переместить объект на конкретную плитку после поворота перекрестка.Например, робот будет находиться в плитке в позиции [2] [1] и захочет перейти к плитке в позиции [1] [2] после поворота перекрестка, а затем двигаться дальше вверх.Или это может быть в [1] [2], и вы хотите перейти к [2] [1] после поворота перекрестка, а затем двигаться дальше назад.

Как я могу переместить робота из одной плитки в другуюПлитка?Каким образом я могу ссылаться на конкретную плитку в BufferedImage, чтобы я мог разместить объект.Все, что я хочу, это дать мне идеи, как я могу это сделать.

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

Большое спасибо.

1 Ответ

0 голосов
/ 03 августа 2010

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

private Point convertGridToDisplay(int x, int y) {
  return new Point(x * 160, y * 160);
}

private Point convertDisplayToGrid(int x, int y) {
  return new Point(x / 160, y / 160);
}

convertGridToDisplay() даст вам верхнюю левую координату, где вы должны нарисовать ваше изображение.

Например:

Point point = convertGridToDisplay(2, 1);
graphics.drawImage(img, null, point.x, point.y)

нарисует ваше изображение в сетке (2, 1).

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

...