Создание класса карты

Для выполнения данной работы нам необходимо создать несколько классов, описывающих объекты реального мира: карта и колода карт.

Начнем с карты. Карта имеет масть и достоинство. Карта может лежать рубашкой вверх (не видима) или картинкой вверх (видима). С картой ассоциируется изображение (файл *.png), для отображения карты на форме.

Создайте в папке с проектом новую папку с именем «img» и скопируйте в нее содержимое папки “img” преподавателя.

Щелкните правой клавишей мыши на названии пакета cardgame в окне проектов (слева вверху).В появившемся контекстном меню выберите
Создать → Класс Java... Укажите имя класса BadCardException. Сделайте у него следующее содержимое:

public class BadCardException extends Exception {

public BadCardException() {

super();

}

public BadCardException(String msg) {

super(msg);

}

}

Щелкните правой клавишей мыши на названии пакета cardgame в окне проектов (слева вверху).В появившемся контекстном меню выберите
Создать → Класс Java... Укажите имя класса Card. Добавьте в него следующее содержимое:

//введем перечислимые типы для масти и достоинства

public static enum TMast { Diamonds, Harts, Spades, Clubs};

//обратите внимание: перечисление в Java это класс и мы можем

//добавлять в него дополнительные переменные и конструкотры

public static enum TRang {

Six(6), Seven(7), Eight(8), Nine(9), Ten(10), Jack(11), Queen(12), King(13), Ace(14);

//переменная для сравнения карт, чем она больше, тем

//карта старше

private int weight;

public int getWeight() { return weight;}

//конструктор

TRang(int pw){ weight = pw;}

};

////////////////////////////////////////////////////

// переменные уровня класса

///////////////////////////////////////////////////

//масть и достоинство нашей карты

private TMast mast;

private TRang rang;

//рубашкой вверх или вниз

private boolean isVisible;

//номер изображения в массиве изображений (см ниже)

private int indCardPicArray;

//массив с названиями файлов-картинок для карт

//обратите внимание: имя файла состоит

// из достоинства (как в перечислении)

// и масти (тоже как в перечислении)

public static String[] cardPicArray = {

"./img/Six_Diamonds.png",

"./img/Seven_Diamonds.png",

"./img/Eight_Diamonds.png",

"./img/Nine_Diamonds.png",

"./img/Ten_Diamonds.png",

"./img/Jack_Diamonds.png",

"./img/Queen_Diamonds.png",

"./img/King_Diamonds.png",

"./img/Ace_Diamonds.png",

"./img/Six_Harts.png",

"./img/Seven_Harts.png",

"./img/Eight_Harts.png",

"./img/Nine_Harts.png",

"./img/Ten_Harts.png",

"./img/Jack_Harts.png",

"./img/Queen_Harts.png",

"./img/King_Harts.png",

"./img/Ace_Harts.png",

"./img/Six_Spades.png",

"./img/Seven_Spades.png",

"./img/Eight_Spades.png",

"./img/Nine_Spades.png",

"./img/Ten_Spades.png",

"./img/Jack_Spades.png",

"./img/Queen_Spades.png",

"./img/King_Spades.png",

"./img/Ace_Spades.png",

"./img/Six_Clubs.png",

"./img/Seven_Clubs.png",

"./img/Eight_Clubs.png",

"./img/Nine_Clubs.png",

"./img/Ten_Clubs.png",

"./img/Jack_Clubs.png",

"./img/Queen_Clubs.png",

"./img/King_Clubs.png",

"./img/Ace_Clubs.png",

"./img/rubawka.png", //рубашка

"./img/null.png" //пустое место

};

//для удобства добавим две константы:

//индекс имени файла изображения рубашки

public static final int RUBAWKA = 36;

//индекс имени файла изображения пустого места

public static final int NULL = 37;

///////////////////////////////////////////////////////

// методы

//////////////////////////////////////////////////

//конструктор

public Card(TMast pm, TRang pr) throws BadCardException{

mast = pm;

rang = pr;

isVisible = false;

//метод getIndCardPicArray() описан ниже

indCardPicArray = getIndCardPicArray(pm, pr);

//если для карты нет изображения, вызываем исключение

if(indCardPicArray == -1) throw new BadCardException("Карта не существует!");

}

//возвращает значение свойства видимости

public boolean isIsVisible() {return isVisible;}

}

//устанавливает новое значение свойства видимости

public void setIsVisible(boolean isVisible) {

this.isVisible = isVisible;

}

//возвращает масть карты

public TMast getMast() {

return mast;

}

//возвращает достоинство карты

public TRang getRang() {

return rang;

}

//возвращает имя файла-картинки карты

//если карта не видима, то файла рубашки

public String getCardPic()

{

if(isVisible)

return cardPicArray[indCardPicArray];

else

return cardPicArray[Card.RUBAWKA]; //рубашка

}

//метод, который по масти и достоинству карты

//возвращает индекс имени файла-картинки

//из массива cardPicArray

private int getIndCardPicArray(TMast pm, TRang pr){

//написать самим:

//по масти и достоинству формируем строку

//с именем файла-картинки;

//ищем эту строку в массиве cardPicArray

//если нашли, возвращаем найденный индекс

//если нет, возвращаем -1.

}

//сравнивает карту с другой картой по масти и достоинству

public boolean equals(Card pCard){

if(pCard.rang == rang && pCard.mast == mast)

return true;

else

return false;

}

//сравнивает карту с другой картой только по достоинству

//т.к. в нашей игре масти не учитываются

public boolean equalsInGame(Card pCard){

if(pCard.rang == rang)

return true;

else

return false;

}

//метод определяет, какая карта старше, а значит бьет другую

public boolean isMoreInGame(Card pCard){

//написать самим, но учитывать, что:

//сравнить величину карты можно через rang.getWeight()

//для этого мы и ввели переменную в перечисление Trang,

//чтобы иметь числовую характеристику достоинства карты

//не забудьте: 6 бьет туза

}

//отображает карту в указанном в параметре ЭУ на форме

public void show(JLabel lb){

lb.setIcon(new ImageIcon(getCardPic()));

lb.invalidate();

}


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: