2010-08-03 3 views
0

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

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

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

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

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

спасибо.

+1

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

+0

Помогают ли эти примеры? Какие библиотеки вы пытаетесь использовать? http://www.java2s.com/Code/Java/2D-Graphics-GUI/Programtodrawgrids.htm http://www.java2s.com/Code/Java/2D-Graphics-GUI/AntiAlias.htm –

+0

В настоящий момент Я сделал только сетку, которая представляет собой 3 ряда и 3 столбца плитки с буферизацией. У меня нет никакого конкретного кода для показа. Мне нужен способ вычисления способа перемещения объекта в правую ячейку. Надеюсь, я здесь понятен. – kap

ответ

0

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

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() пригодится, когда вы хотите, чтобы выяснить, какие сетки щелчок мыши была сделана в.

Смежные вопросы