Хранение объектов Piece в массиве - Java Tetris Tutorial
Я просто новичок в Java, и я нашел этот хороший учебник по созданию Java Tetris Game.
У меня нет наставника или наставника, который бы помог мне с этим - я искал одного целую вечность:(так что в настоящее время я сам изучаю Java и PHP:)
В любом случае, вот сайт, который я нашел http://zetcode.com/tutorials/javagamestutorial/tetris/
Может кто-нибудь объяснить, как этот метод работает из учебника?
Tetrominoes shapeAt(int x, int y) { return board[(y * BoardWidth) + x]; }
Я знаю, что он вызывается из метода Paint()
for (int i = 0; i < BoardHeight; ++i) {
for (int j = 0; j < BoardWidth; ++j) {
Tetrominoes shape = shapeAt(j, BoardHeight - i - 1);
if (shape != Tetrominoes.NoShape)
drawSquare(g, 0 + j * squareWidth(),
boardTop + i * squareHeight(), shape);
}
}
Из того, что я понимаю - он зацикливается на каждом квадрате доски и определяет, есть ли форма (Enum), сохраненная в массиве board[].
Мне просто нужно, чтобы кто-то объяснил мне, как эта часть рисует все формы или остатки фигур, которые были сброшены на дно доски?
И как все квадраты запоминаются в массиве board[]?
Спасибо
1 ответ
Проще говоря, board
массив - это одномерный массив, который запоминает, какую форму имеет каждый квадрат. Хотя он одномерный, он устроен так, что первый ряд идет первым, затем второй ряд и т. Д. Итак, на доске 3х5 вот так:
A B C
D E F
G H I
J K L
M N O
Массив будет таким, что board[0]
будет содержать форму в A, board[3]
будет содержать D и т. д.
Важно отметить, что на самом деле не запоминается целая форма для каждого квадрата - просто какая там была форма. Таким образом, по мере того как фигуры опускаются на дно, каждый отдельный квадрат остается в массиве досок, даже если часть представленной им фигуры стирается удаленной линией. Удаление строки на самом деле просто включает смещение первой части массива "вниз", чтобы перезаписать удаляемую строку, и очистку элементов верхнего ряда (для Tetrominoes.NoShape
).