Перейдем на закладку к программному коду класса stopka (см. рис. 1).
Рис. 1
На игровом поле всего будет тринадцать стопок карт (см. рис. 2). Шесть стопок будет сверху и семь стопок будет снизу. По условию задания, место расположения каждой стопки должно быть обведено белым контуром(см. рис. 2)В некоторые моменты игры стопка может не содержать карт. Количество карт в каждой стопке будет меняться в процессе игры.Пользователь будет переносить карты или группы карт из одной стопки в другую. Карты или группы карт будут добавляться в стопку всегда сверху.
Массив для хранения карт одной стопки будет не самым удобным вариантом. Намного удобнее использоватьсписок значенийдля хранения карт одной стопки. При постановке задания к игре "Пасьянс-Косынка"мы говорили о таком понятии как список значений. Список состоит из элементов. В нашем случае элементами списка будут объекты на основании класса karta, который уже полностью создан.
Рис. 2
В отличие от массива, в список значений можно добавлять новые элементы и удалять имеющиеся элементы. При этом размер списка –количество элементов в списке будет изменяться. Каждый элемент списка имеет номер, как и элемент массива. Нумерация начинается с нуля. Вспомним основные операции над списком, которые понадобятся нам:
1. Определение размера списка: size()
2. Добавление нового элемента в список:add()
3. Удаление элемента из списка: remove()
4. Получение элемента из списка: get()
5. Удаление всех элементов из списка:clear()
При постановке задания к игре "Пасьянс-Косынка" программный код класса stopka уже был представлен в своем конечном варианте как вспомогательный инструмент при самостоятельном создании игры. Добавим этот код в файл stopka.java:
// Подключение класса для списка значений
import java.util.ArrayList;
// Класс стопки карт игрового поля
public class stopka
{
// Список значений
private ArrayList<karta> lst;
// Конструктор класса
public stopka()
{
//Создание пустого списка значений
lst = new ArrayList<karta>();
}
// Получение карты из списка по номеру
public karta get(int nom)
{
return lst.get(nom);
}
// Добавление новой карты в список
public void add(karta elem)
{
lst.add(elem);
}
// Удаление карты из списка по номеру
public void remove(int nom)
{
lst.remove(nom);
}
// Получение количества элементов в списке
public int size()
{
return lst.size();
}
// Удаление всех элементов списке
public void clear()
{
lst.clear();
}
}
Чтобы воспользоваться списком значений ArrayList -необходимо подключить:
// Подключение класса для списка значений
import java.util.ArrayList;
В классе stopka всего одно свойство класса (переменная класса) –это список значений:
// Список значений
private ArrayList<karta> lst;
Обратите внимание, что тип значения: karta. Наш список будет хранить карты колоды, реализованные в классе karta.
В конструкторе класса создается изначально пустой список:
// Создание пустого списка значений
lst = new ArrayList<karta>();
Далее в классе перечислены методы, о которых мы говорили выше. Методы, которые понадобятся нам при работе со стопкой карт на игровом поле.Далее мы создадим массив из тринадцати стопок и будем работать со всеми стопками карт на игровом поле через массив.
На этом реализация класса stopka является полностью законченной для всех уровней сложности. Больше к этому классу мы возвращаться не будем. Можно закрыть закладку stopka.java (см.рис. 3).
Рис. 3
Получается, что четыре класса проекта у нас уже полностью закончены. Все остальные доработки коснутся классов poleи game.