Задание 14
Напиши реализацию метода removeFullLines в классе Field
Надо
а) удалить все строки из матрицы, которые полностью заполнены (состоят из одних единиц)
б) сместить оставшиеся строки вниз
в) создать новые строки взамен отсутствующих.
ВАЖНО!
matrix[y][x] содержит элемент с координатами (x,y)
matrix[i] содержит i-ю строку
а) Мы можем удалить стоку:
matrix[i] = null
б)Скопировать [ссылку на] строку:
matrix[i+1] = matrix[i];
в)Создать новую строку:
matrix[i] = new int[width];
public void removeFullLines() {
int[][] matrixCopy = new int[matrix.length][matrix[0].length];
for (int i = 0; i < matrix.length; i++) {
Arrays.fill(matrixCopy[i], 0);
}
int mCount = matrixCopy.length - 1;
for (int i = matrix.length - 1; i >= 0; i--) {
String line = Arrays.toString(matrix[i]);
System.out.println("check: " + line);
if (line.contains("0") && line.contains("1")) {
matrixCopy[mCount--] = Arrays.copyOf(matrix[i], matrix[i].length);
}
}
matrix = matrixCopy;
for (int[] aMatrix : matrix) {
for (int anAMatrix : aMatrix) {
System.out.print(anAMatrix);
}
System.out.println();
}
}
public void step() {
//опускам фигурку вниз
//если разместить фигурку на текущем месте невозможно:
//поднимаем обратно
//приземляем
//если фигурка приземлилась на самом верху - игра окончена
//удаляем заполненные линии
//создаем новую фигурку
figure.down();
if (figure.isCurrentPositionAvailable()) {
figure.up(); //поднимаем до границы лежащего блока / дна стакана
figure.landed();
if (figure.getY() == 0) {
isGameOver = true;
}
field.removeFullLines();
figure = FigureFactory.createRandomFigure(field.getWidth() / 2, 0);
}
}
Задание 16
Напиши свою реализацию методов left(), right(), up(), down() в классе Figure.
Подумай, что должны делать эти методы?
public void left() {
x--;
}
public void right() {
x++;
}
public void down() {
y++;
}
public void up() {
y--;
}
((figureMatrix[i][j] == 1 && fieldMatrix[figure.getY() + i][figure.getY() + j] == 1) //если фигурка цепляет блок в стакане
|| (figureMatrix[i][j] == 1 && (i + figure.getY()) >= fieldMatrix.length)) { //если фигурка провалилась за дно стакана
Leave A Comment