Нарисуйте позицию из 2d-массива в нужном месте холста.

Предыстория:

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

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

                 //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 в поперечнике, как и предполагалось.

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

Проблема

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

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

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

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


person Anon    schedule 12.04.2010    source источник


Ответы (1)


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

or

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

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

person Tedil    schedule 12.04.2010