2D Array copy (JAVA)
Первый пост здесь. Коротко говоря, мне нужно было сделать тетрис на Java, он работал нормально, но у него были некоторые проблемы с оптимизацией (я только начал программировать в этом семестре).
Когда я обсуждал игру с учителем, он указал мне на наличие ненужного кода, когда строка была заполнена, и мне пришлось удалить / сдвинуть строки.
У меня нет точного кода на данный момент, но это было что-то вроде этого:
public static int [][] trueBoard = new int [DIM_LINES][DIM_COLS];
//**CODE TO SHIFT LINES**//
for(int line=0;line < DIM_LINES;++l) //about this, ++l or l++?
for(int cols=0;cols < DIM_COLS;++c)
trueBoard[l][c]=trueBoard[l-1][c];
Учитель сказал, что быть в 2 бесполезно, а я должен просто сделать
for(int line=0;line < DIM_LINES;++l)
trueBoard[l]=trueBoard[l-1];
Но после того, как я сделал это изменение, игровые ошибки довольно сильно. Из моего исследования кажется, что при этом способе массива указывают на один и тот же "объект" (в данном случае int) вместо простого копирования элементов. Поэтому я спрашиваю, может ли кто-нибудь объяснить более глубокий анализ и немного помочь с этим решением / другим
1 ответ
Ваш учитель неверен, а ваши исследования верны.
Вот несколько способов справиться с этим: Как мне скопировать 2-мерный массив в Java?