Змейка(14)

  • 24
  • Недоступна
Теперь поработаем над методом print(). Надо: а) вывести на экран прямоугольник из точек размером width x height. б) тело змеи отметить символом "x"-английское в) голову змеи нарисовать символом "X"-английское. Подсказка: а) удобно сначала создать матрицу типа int[][] с размером (height x width).
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (102)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Максим Дудин
Уровень 29, Калининград
27 мая, 14:38
ну как всегда, всё рисует но не так (не проходит проверку) переделал как в комментах, потому что уже понятно что и как всё рисует, но не проходит проверку (правда уже только по одному пункту) Тело змеи должно быть отмечено символами x...(= а у меня 'х', Причём всё как и с 'X' и с '^' но с ними всё нормально... пошёл искать... ну т.е. а если у неё сначала нет тела, там только одна голова (она же ещё никого не съела), тогда что?
Максим Дудин
Уровень 29, Калининград
27 мая, 14:51
нашёл... просто в цикле ошибся с длинной a<snake.getSections().size() много думать тоже вредно... загоняешься...
Сергей Б
Уровень 23, Чебоксары, Россия
14 марта, 07:28
В комментах писали, что если назовешь не matrix - валидатор не пропустит. Не знаю насколько правда, но тоже решил не рисковать. Массив создавал по принципу
new int[height][width]
, ну а далее по условию, голова, тело, мышь (Y - height, X - width), а если ни то ни другое, то "."
Anonymous #2497433
Уровень 35
24 апреля, 11:05
спасибо, помог этим (Y - height, X - width) забыл, что в массиве поменялось положение ширина-высота
Дмитрий Яковенко
Уровень 35, Москва
6 мая, 07:57
>> если назовешь не matrix - валидатор не пропустит На текущий момент это не актуально. Назвал массив по другому.
Тимур Исхаков Java Developer в GridNine
25 февраля, 07:56
Если вы ВРОДЕ БЫ все сделали правильно, но валя все равно ругается, проверьте, что при итерации списка ячеек змеи, вы вызываете те данные, которые нужны.
Snake.getX(); //вместо необходимого
Snake.getSections().get(i).getX();
Дмитрий Яковенко
Уровень 35, Москва
6 мая, 07:55
Snake.getX(); - это координаты головы змеи, там всегда индекс 0.
Даниил Александрович
Уровень 35, Тамбов , Россия
24 февраля, 09:14
28 попыток. X, Y и Z небыло не хотел принимать! все пункты были красными.Сначала как обычно до упора сам, по комментам делал, потом плюнул взял решение из инета. всеравно не проходил. все красное. Обнулил всю задачу с 1 уровня добрался сюда, написал все с начала, и о чудо. появились зеленые галочки. есть подозрение! что в задании #8 (пункт Г) прописано должна быть создана обязательно секция null ее я видимо и создал. при повторном прохождении эту секцию не делал.
Иван
Уровень 36, Рязань, Россия
27 января, 10:35
В очередной раз не могу понять почему сначала требует в матрице Y, затем X, кто шарит в матане объясните пжл, встречаю такое не в первый раз, но никак не могу понять
Future Man
Уровень 25
10 февраля, 13:43
не знаю как там в матане, но применительно к данной задаче все просто... Сначла требудется Y тк мы это отрисовываем в консоль, а в консоль выводим по строкам... Поэтому Y это высота (кол-во строчек, вспомни ось ординат из школы т.е. Y выше от 0), а X это справа от нуля (ширина) - кол-во символов в строке... Теперь опять же вернемся к тому, что выводить мы можем ТОЛЬКО ПОСТРОЧНО В КОНСОЛЬ, тогда как отрисовать ШИРИНУ, если мы начнем выводить в столбик? подумай и поймешь...
Evgeny Siganov
Уровень 28, Москва
16 февраля, 08:16
А при чём здесь вывод построчно? Мы же выводим просто поочерёдно элементы матрицы, и то в какой системе координат она представлена я тоже не знал (где Y а где X). Но теперь ясно Y это вертикаль, X горизонталь.
Future Man
Уровень 25
16 февраля, 11:32
Ну что бы сформировать матрицу, т.е по сути квадрат в консоль то ты в строку выводишь, как ни крути...
Михаил
Уровень 26, Саратов, Россия
27 февраля, 19:14
Если выводить символами то не важно a[x][y] или a[y][x], главное самому не запутаться. Но проще выводить строками new String([x]).
for (char[] chars : a[y]) { System.out.println(new String(chars); }
Дмитрий Яковенко
Уровень 35, Москва
6 мая, 08:07
На самом деле не важно, снаружи X или внутри, главное, чтобы в рамках проекта было везде одинаково. НО! Есть устоявшаяся практика. И её крайне желательно соблюдать, особенно если планируете работать с другими людьми. Общепринято - внутренний массив - это обычный массив, он по x. Внешний массив - это массив внутренних массивов. Возможно проще будет представить, что внутренний массив - это строка, тогда внешний массив - это массив строк.
aleksdenni
Уровень 37, Полтава, Украина
7 сентября, 09:02
Всё просто , нужно на это всё смотреть задом на перёд . Как бы, конец - это начало. Так работают внутренние циклы.
D279
Уровень 35
2 ноября 2020, 12:01
Заполнение массива: field[mouse.getY()][mouse.getX()] = '^';
wan-derer.ru
Уровень 40, Москва, Россия
24 сентября 2020, 08:16
А зачем делать матрицу инт? Я сделал чар и пишу в неё прямо нужные символы. Валя съела нормально
Herr Ives
Уровень 30
16 февраля, 15:21
char потом преобразуется в инт. чем меньше лишних движений тем лучше
Victor Zverev
Уровень 41, Киев
6 сентября 2020, 18:34
Валидатор задание принял, но есть интересный ньюанс - если использовать такие данные:
game = new Room(5, 5, new Snake(5, 1));
то получаю
ArrayIndexOutOfBoundsException
Melonorm
Уровень 28, Николаев, Украина
4 октября 2020, 08:18
Если у Вас с комнатой что-то типа такого:
char [][] gamefield = new char[height][width];
А со змеиной головой что то типа такого:
int headX = game.snake.getX();
int headY = game.snake.getY();
gamefield[headY][headX] = 'X';
то в Вашем случае пытаемся на игровое поле шириной 5 ячеек впихнуть голову змеи в шестую ячейку (индекс которой будет равен пяти). Отсюда и ArrayIndexOutOfBoundsException получается.
Ivan D
Уровень 35
5 сентября 2020, 11:16
Тут пишут, что имя массива должно быть matrix. Я назвал gameField, и у меня все приняло. Так что не забивайте голову.
Фёкла
Уровень 35, Москва, Россия
27 июня 2020, 18:05
Для тех, кто запутался в XY и height/width * Размеры матрицы [height] [width] * Все методы getY() возвращают значение для height * Все методы getX() возвращают значение для width * Проход цикла - сначала высота, потом ширина - выглядит так:
for (int h = 0; h < getHeight(); h++) {
    for (int w = 0; w < getWidth(); w++) { }
}