Хранение объектов 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).

Другие вопросы по тегам