Сделать Сетка Шашки Визуально? - PullRequest
0 голосов
/ 20 июня 2011

Попытка сделать сетку Как это с использованием Java, и я предполагаю, что 2d Array, я в конечном итоге собираюсь превратить это в игру шашки. Сделать сетку довольно просто, но меня интересует, как я могу визуально представить этот массив, так что, например, верхняя вторая секунда от левого квадрата будет выглядеть как [0] [2], чтобы каждый квадрат соответствовал индексу массива. Любой совет был бы отличным, я закончил первый урок по Java и знаю, что это первый проект, который мы получаем для следующего урока. Итак! я пытаюсь понять это, спасибо за любую помощь!

1 Ответ

0 голосов
/ 22 июня 2011

Учитывая, что это внутреннее соглашение, оно полностью зависит от вас: просто выберите один из углов сетки, например. top-lef, как ваше происхождение . (Общее соглашение - использовать верхний левый как источник и нижний правый как [x-max] [y-max].)

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

Для рисования в ячейке сетки @ (i, j) вам понадобится метод получения координат холста (x, y) данной ячейки сетки:

/** maps grid cell to coordinates of cell */
public Point getCoordinates(int i, int j);

Здесь у вас есть несколько вариантов: если вы вернете центральную точку, например, средняя точка черного квадрата или его относительное происхождение, например его верхние левые координаты? Зависит от того, что вы пытаетесь сделать. Например, если вы собираетесь рендерить маленькие значки в каждой ячейке, API-интерфейс рисования берет верхнюю левую координату изображения, которое вы отрисовываете, поэтому в этом случае целесообразно вернуть начало координат.

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

/** maps point in canvas to a data cell - returned 'point' is (i, j) */
public Point getIndex (int x, int y);
...