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