Большая задача: Пишем игру Тетрис - 1

— Привет, Амиго!

— Здравия желаю, Капитан Бобров!

— У меня для тебя новая миссия — давай напишем игру Тетрис.

Это секретная операция. Все дальнейшие инструкции через Intellij IDEA.

— Есть, начать выполнение секретного задания.

undefined
7
Задача
Java Collections, 2 уровень, 15 лекция
Недоступна
Тетрис(1)
Давай напишем игру Тетрис! Наш Тетрис будет состоять из двух вещей: поля из клеток и фигурки, которая падает. Поэтому для начала создай три класса: Field(поле с клетками), Figure(фигура) и сам Tetris. Также нам понадобится метод main в классе Tetris.
undefined
7
Задача
Java Collections, 2 уровень, 15 лекция
Недоступна
Тетрис(2)
Отлично! Теперь добавь в класс Tetris два поля: field типа Field и figure типа Figure.
undefined
7
Задача
Java Collections, 2 уровень, 15 лекция
Недоступна
Тетрис(3)
Поле есть, фигура есть, а как их получить? Добавь геттеры для полей field и figure.
undefined
7
Задача
Java Collections, 2 уровень, 15 лекция
Недоступна
Тетрис(4)
Так же еще нам понадобится пара методов. Добавь в класс Tetris методы run() и step(): run() будет отвечать за всю игру. А step() - за один шаг в игре. Тип возвращаемого значения void для обоих методов. Тут и в будущем, если нет явных указаний с каким модификатором доступа создавать метод, то он д
undefined
7
Задача
Java Collections, 2 уровень, 15 лекция
Недоступна
Тетрис(5)
Теперь нужно создать объект самого Тетриса. Добавь в класс Tetris статическое поле game типа Tetris. Поле game НЕ должно быть приватным. Затем в методе main создай объект типа Тетрис и сохрани его в эту переменную. Затем добавь вызов метода run.
undefined
7
Задача
Java Collections, 2 уровень, 15 лекция
Недоступна
Тетрис(6)
Теперь перейдем к классу Field. Он будет отвечать за хранение данных о текущих занятых и свободных клетках на поле игры. Добавь в класс Field два поля поля: width (ширина) типа int, height(высота) типа int. Так же нам понадобится матрица - двумерный массив: matrix(матрица) типа int[][]; Там же добав
undefined
7
Задача
Java Collections, 2 уровень, 15 лекция
Недоступна
Тетрис(7)
Нам понадобится еще 4 метода в классе Field: а) void print() - объект будет отрисовывать на экран свое текущее состояние; б) void removeFullLines() - будет удалять из матрицы полностью заполненные строки и сдвигать вышележащие строки вниз; в) Integer getValue(int x, int y) - возвращает значение которое находи
undefined
7
Задача
Java Collections, 2 уровень, 15 лекция
Недоступна
Тетрис(8)
Теперь создадим костяк класса Figure. Этот класс будет описывать падающую фигурку. Нам понадобятся ее координаты и форма. За координаты будут отвечать две переменные x и y. За форму - матрица. Двумерный массив 3x3, состоящий из единиц и нулей. Единицей мы обозначаем что клетка есть, нулем - что она
undefined
7
Задача
Java Collections, 2 уровень, 15 лекция
Недоступна
Тетрис(9)
Если ты обратил внимание, мы пишем программу "сверху вниз". Сначала решили, какие классы нам нужны. Затем - какие методы. А потом уже начнем писать код этих методов. Таким образом мы разбиваем большую задачу на множество маленьких. Когда код всех методов будет готов, останется только проверить - так
undefined
7
Задача
Java Collections, 2 уровень, 15 лекция
Недоступна
Тетрис(10)
Также нам понадобятся методы для управления фигуркой. Добавь в класс Figure методы: left() - для движения фигурки влево. right() - для движения фигурки вправо. down() - для движения фигурки вниз. up() - для движения фигурки вверх. rotate() - для поворота фигурки вокруг главной диагонали. downMaximu
undefined
7
Задача
Java Collections, 2 уровень, 15 лекция
Недоступна
Тетрис(11)
Теперь создай класс FigureFactory. С его помощью мы будем создавать фигуры различных форм. Пока он будет содержать только один статический метод createRandomFigure: static Figure createRandomFigure(int x,int y)
undefined
14
Задача
Java Collections, 2 уровень, 15 лекция
Недоступна
Тетрис(12)
В тетрисе мы управляем движением фигурки с помощью клавиатуры. Тут есть 4 действия: движение влево (кнопка влево) движение вправо (кнопка вправо) поворот фигурки (цифра 5 на доп.клавиатуре справа) падение вниз (пробел) Мы будем обрабатывать ввод с клавиатуры в методе run() класса Tetris. И тут у м
undefined
14
Задача
Java Collections, 2 уровень, 15 лекция
Недоступна
Тетрис(13)
Теперь приступим к реализации созданных методов. Напиши реализацию метода print в классе Field а) Метод должен выводить на экран прямоугольник состоящий из символов '.' и 'X'. б) Высота прямоугольника равна height, ширина - width в) Если данная клетка пустая - вывести точку, если не пустая - английс
undefined
28
Задача
Java Collections, 2 уровень, 15 лекция
Недоступна
Тетрис(14)
Напиши реализацию метода removeFullLines в классе Field. Надо: а) удалить все строки из матрицы, которые полностью заполнены (состоят из одних единиц); б) сместить оставшиеся строки вниз; в) создать новые строки взамен отсутствующих. ВАЖНО! matrix[y][x] содержит элемент с координатами (x,y).
undefined
14
Задача
Java Collections, 2 уровень, 15 лекция
Недоступна
Тетрис(15)
Напиши реализацию метода step в классе Tetris. В методе надо переместить фигурку вниз на один шаг. Если после перемещения положить фигурку на текущее место невозможно, то: а) поднять ее обратно (up) б) "приземлить" ее (landed) в) удалить все "полные линии" в объекте field г) создать новую фигурку в
undefined
7
Задача
Java Collections, 2 уровень, 15 лекция
Недоступна
Тетрис(16)
Напиши свою реализацию методов left(), right(), up(), down() в классе Figure. Подумай, что должны делать эти методы?
undefined
7
Задача
Java Collections, 2 уровень, 15 лекция
Недоступна
Тетрис(17)
Я тут немножечко подправил код. Но в целом - отлично. Запускаем и наслаждаемся тетрисом. P.S. Не забудь отрегулировать высоту консоли.