Сейчас метод drawKoloda()выполняет перерисовку только двух стопок карт с номерами 0 и1. Выполним доработку этого метода, чтобы он выполнял перерисовку всех стопок карт на игровом поле. Начнем с рисования четырех домашних стопок с номерами 2, 3, 4, 5. Принцип их рисования ничем не отличается от рисования стопки с номером0. В метод drawKoloda() добавим программный код для рисования домашних стопок:
//ЧЕТЫРЕ ДОМАШНИЕ СТОПКИ
for (int i=2;i<=5;i++)
{
//Если в стопке более одной карты
if (stopki[i].size()>1)
{
// Получаем и рисуем вторую сверху карту
stopki[i].get(stopki[i].size()-2).draw(gr);
// Получаем и рисуем самую верхнюю карту
stopki[i].get(stopki[i].size()-1).draw(gr);
}
else if (stopki[i].size()==1) // если в стопке одна карта
{
// Получаем и рисуем самую верхнюю карту
stopki[i].get(stopki[i].size()-1).draw(gr);
}
}
Четыре домашние стопки мы будем перерисовывать с помощью цикла,который перебирает сразу четыре стопки.
Ситуация с рисованием нижних семи стопок несколько отличается.Все карты каждой нижней стопки должны рисоваться со смещением сверху вниз.Смещение должно быть таким, чтобы в открытом состоянии карт стопки -были видны все карты (см. рис. 3).
Рис. 3
Метод рисования только отображает карты с их текущими координатами. Поэтому смещение карт сверху вниз необходимо создавать при раздаче карт из главной колоды.
В метод drawKoloda() добавим программный код для рисования нижних семи стопок:
// НИЖНИЕ СЕМЬ СТОПОК
for (int i=6;i<13;i++)
{
//Если в стопке есть карты
if (stopki[i].size()>0)
{
// Перебираем все карты из стопки
for (int j=0;j<stopki[i].size();j++)
{
// Рисуем карту
stopki[i].get(j).draw(gr);
}
}
}
В верхнем цикле перебираем все нижние семь стопок. Если в стопке имеются карты, то перебираем их все от начала до конца во внутреннем цикле и рисуем каждую карту.
Теперь метод drawKoloda() выполняет рисование всех тринадцати стопок.