Далее создаем класс «Колода карт». Под колодой будем понимать некоторую стопку карт, содержащую от 0 до 36 карт. По одной такой колоде будет у каждого игрока и две на столе, куда игроки будут выкладывать карты для сравнения.
Щелкните правой клавишей мыши на названии пакета cardgame в окне проектов (слева вверху).В появившемся контекстном меню выберите
Создать → Класс Java... Укажите имя класса Deck. Добавьте в него следующее содержимое:
//колода это динамический массив из объектов типа Card
private ArrayList<Card> deck;
//конструктор
public Deck(){
deck = new ArrayList<>(36);//указываем емкость ==36
}
//возвращает количество карт в колоде
public int getCount(){ return deck.size();}
//определяет: есть ли такая же карта в колоде
public boolean isPresent(Card pCard){
for(Card x: deck)
if(x.equals(pCard))
return true;
return false;
}
//добавляем новую карту на верх колоды
public void putInTop(Card pCard){
deck.add(0, pCard);
}
//добавляем новую карту в конец колоды
public void putInTail(Card pCard) {
deck.add(pCard);
}
//берем карту сверху
//если попытаемся взять карту из пустой колоды,
//метод вернет null
|
|
public Card take(){
Card card;
try{
card = deck.remove(0);
}catch(IndexOutOfBoundsException e){
return null;
}
return card;
}
//переносим все карты из нашей колоды в другую,
//которая указана в параметре
public void moveToOtherDeck(Deck otherDeck){
for (Card x: deck) {
otherDeck.putInTail(x);
}
deck.clear();
}
//очищаем колоду
public void clear(){ deck.clear();}
//перетасовка калоды
public void mix(){
//написать самим по следующему алгоритму:
//берем два случайных числа в диапазоне от 0 до количества
//карт в колоде, это будут индексы карт
//и меняем эти карты местами
//повторяем эту операцию 300 раз
}
//отображение колоды на форме в указанном ЭУ
public void show(JLabel lb){
if(deck.isEmpty()){
lb.setIcon(new ImageIcon(Card.cardPicArray[Card.NULL]));
lb.invalidate();
return;
}
Card topCard = deck.get(0);
lb.setIcon(new ImageIcon(topCard.getCardPic()));
lb.invalidate();
}