Динамическая матрица Java - PullRequest
0 голосов
/ 04 марта 2011

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

For Instance:

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

1111111111111111111111111
1001110000000000000000011
1100010111110111110001111
1101110011111111110001111
1101111000000100000001111
1100000111110111110000011
1101110111110111111111011
1101110111110111111111011
1100110111110111111111011
1001110000000001110000011
1111111111111111100011111

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

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

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

Любая помощь будет отличной.

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

1 Ответ

1 голос
/ 04 марта 2011

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...