Динамическая матрица Java

Итак, название мало что говорит, но я хочу сделать своего рода редактор для лабиринтов. У меня было задание сделать решатель лабиринта. Я сделал это, прочитав файл. Первая строка содержит количество строк и столбцов. После этого это лабиринт символов, чтобы сделать лабиринт. Я пробежался по каждому месту и в зависимости от символа составил матрицу с числом, обозначающим, что там было.

For Instance:

11 25
*************************
*  ***                 **
**   * ***** *****   ****
** ***  **********   ****
** ****      *       ****
**     ***** *****     **
** *** ***** ********* **
** *** ***** ********* **
**  ** ***** ********* **
*  ***         ***     **
*****************   *****

1111111111111111111111111
1001110000000000000000011
1100010111110111110001111
1101110011111111110001111
1101111000000100000001111
1100000111110111110000011
1101110111110111111111011
1101110111110111111111011
1100110111110111111111011
1001110000000001110000011
1111111111111111100011111

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

Таким образом, я могу позволить им построить лабиринт, а затем программа решит его, или они могут сохранить его.

Конечно, именно здесь у меня возникают проблемы, как мне нарисовать прямоугольник с сеткой на основе количества строк и столбцов, а затем сделать так, чтобы я знал, где они щелкнули......

Любая помощь будет здорово.

РЕДАКТИРОВАТЬ: ОК, я рисую лабиринт на основе заданных строк и столбцов. У меня есть обнаружение щелчка, и он может помещать квадрат там, где я нажимаю. Но это не меняет общую матрицу, а затем перерисовывает все это снова.


person Tempus35    schedule 04.03.2011    source источник


Ответы (1)


Как вы, кажется, уже разобрались, с помощью оператора new можно сделать лабиринт любого размера:

int[][] maze = new int[rows][cols];

Я не знаю, какой пакет пользовательского интерфейса вы используете, но большинство работает по одному и тому же принципу: экран имеет определенное количество пикселей в ширину и высоту, и вы рисуете линии, указывая пиксельные координаты начала и конца. Точно так же, когда пользователь нажимает, вы получаете координаты клика в пикселях. Вы можете определить размер своих ящиков, взяв общую ширину и высоту экрана и разделив их на количество строк и столбцов вашего лабиринта. Используйте эти размеры, чтобы нарисовать лабиринт. Вы также можете определить строку и столбец щелчка, взяв координаты (x,y) щелчка в пикселях и разделив x на ширину окна, а y на высоту окна (возможно, после корректировки того, где вы начали рисовать лабиринт, если это было не в пикселе (0,0)).

person Ted Hopp    schedule 04.03.2011
comment
хм, я пробовал что-то подобное, но я все еще не могу заставить его работать. Размер окна установлен на 500 500 для начала, лабиринт рисуется, начиная с 0,0, а затем по количеству столбцов и количеству строк вниз. С коробками размера windowWidth/columns и windowHeight/rows. - person Tempus35; 04.03.2011
comment
Что не работает? Возможно, вам придется немного изменить формулу, чтобы учесть ширину границ блока. - person Ted Hopp; 04.03.2011