2014-10-29 2 views
0

Краткий обзор моей программы: Я делаю игру War. Поэтому, когда нажата кнопка воспроизведения, появляются две новые карты со случайными значениями. У каждой карты больше выигрышей, а прямоугольник появляется в середине окна. Когда игра продолжается, кто когда-либо выигрывает, больше прямоугольников выдвигается набок (слева или справа в зависимости от того, какая карта выигрывает), но трюк в том, что если, например, карта слева выигрывает первые три, карта справа выигрывает 1, прямоугольник удаляется, а только 2 идут влево. Если право снова побеждает, другое удаляется и т. Д. Прямоугольник создается в отдельном классе Bar, и вот что мне нужно для создания массива с прямоугольником, который идет влево.Удаление последнего объекта в массиве в Java?

Bar newBar = new Bar(300,250); \t 
 
counter = d++; 
 
newBar = new Bar(300-(counter*30), 250); 
 
if(numDi >= bars.length){ \t \t //You want it to always be higher \t \t 
 
    Bar[] temp = new Bar[bars.length +1]; 
 
    for(int i = 0; i < bars.length; i++){ 
 
    temp[i] = bars[i]; 
 
    } 
 
    bars = temp; \t \t //increments bars by 1 
 
} 
 
bars[numDi++] = newBar;

Идея у меня есть, что я мог бы создать, если заявление, которое проверяет, кто выиграл, а также, кто выиграл последнюю игру. И если противник выиграл последнюю игру, мне нужно было бы вычесть прямоугольник. Но как я мог бы вычесть прямоугольник? И как примечание, я не могу использовать какие-либо списки.

+0

Вместо этого используйте «Список» или «Очередь». – MadProgrammer

+0

@MadProgrammer. Я не могу использовать какой-либо список или очередь. Это должно быть сделано с помощью массивов. – John

ответ

0

Вы можете использовать один целочисленный счетчик. Когда правая сторона выигрывает приращение на 1, а когда левая сторона выигрывает, уменьшайте ее на 1. Таким образом, вы можете легко протестировать с помощью оператора if, который в последнее время выигрывает и контролирует то, что происходит в зависимости от того, кто победит.

Если вы не можете использовать список или очередь, я бы предложил использовать два отдельных массива: один для левой и один для правой стороны. Вы можете увеличивать и уменьшать их в соответствии с общим счетом.

+0

Вау, я даже не думал об использовании двух массивов. Это определенная помощь. Но все же проблема заключается в том, что я не знаю, как уменьшить массив. Я полагаю, что мне просто нужно сделать последний элемент нулевым, но как я могу это достичь? – John

+0

Как только вы объявляете массив, он занимает статический блок памяти (т. Е. Размер не может быть изменен). Однако вы можете установить значение 0 (или эквивалент класса Bar). Затем вы можете проверить, является ли значение «0» или нет, и если вы можете обрабатывать длину массива по-разному. –

+0

P.S. поэтому более абстрактные структуры данных, такие как списки и очереди, полезны. –

Смежные вопросы