Нарисуйте позицию из 2d массива на соответствующем месте холста - PullRequest
0 голосов
/ 12 апреля 2010

Справочная информация:

У меня есть два двумерных массива. Каждый индекс в каждом 2-мерном массиве представляет плитку, нарисованную на квадратном холсте, подходящем для плиток 8х8.

Первый 2-мерный массив представляет основные плитки и зацикливается и рисуется на холсте, используя следующий код:

                 //Draw the map from the land 2d array
    map = new Canvas(mainFrame, 20, 260, 281, 281);
        for(int i=0; i < world.length; i++){
            for(int j=0; j < world[i].length; j++){
                for(int x=0; x < 280; x=x+35){ 
                    for(int y=0; y < 280; y=y+35){
                        Point p = new Point(x,y);
                        map.add(new RectangleObject(p,35,35,Colour.green));
                    }
                }
            }
        }

Это создает сетку из зеленых плиток 8 x 8 в поперечнике, как и предполагалось.

Второй двумерный массив представляет позицию на земле. В этом 2-мерном массиве все его индексы равны нулю, кроме одного, который состоит из класса Person.

Задача

Я не уверен, как я могу нарисовать положение на сетке. Я думал о подобном цикле, поэтому он рисует поверх предыдущего 2d массива еще один набор из 64 плиток. Только на этот раз они все прозрачные, но одна плитка не равна нулю. Другими словами, тайл, где находится Персона.

Я хотел использовать поиск по всему циклу, используя сравнительный оператор if в соответствии с

if(!(world[] == null)){
map.add(new RectangleObject(p,35,35,Colour.red));}

Однако мои знания ограничены, и я не совсем понимаю, как их реализовать.

1 Ответ

0 голосов
/ 12 апреля 2010

Не используйте второй массив вообще. Просто создайте RectangleObject с именем, например, currentPosition или activeTile или personPosition. Однако вам не нужно хранить точку в объекте RectangleObject. Либо используйте для этого 2D-массив RectangleObject (чтобы вы могли использовать индексы для доступа к ним), и исключите информацию Point в RectangleObject,

или

Создайте List объектов RectangleObjects и добавьте информацию о Точке - но не увеличивайте на 35, а скорее на 1. Когда вы рисуете плитки, вы все еще можете (зная индекс) определить, куда поместить плитка (например, indexX*tileWidth, indexY*tileHeight).

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

...