самом деле у соответствующей карты просто изменится флажок Is), метод GetlndexCard() вытащит из колоды нужную карту, метод IsCardQ скажет, пуста колода или нет.

Требуемые константы

В принципе, количество мастей (четыре) и число значений карт (от двойки до туза, тринадцать) можно использовать в программе не как символьные названия (константы), а просто как числа, но для некоторых специфических, но весьма распространенных игр мастей и значений карт может быть и значительно больше, и меньше (например, для преферанса нужны те же 4 масти, но только 8 значений, начиная с семерки), поэтому лучше такие числа описать в виде констант:

const SUIT_NUM = 4; // число мастей const VALUE_NUM = 13; // число значений карт

— А какой то^да будет размер колоды? ,

— Он равен числу мастей, умноженному на число значений.

const PACK LEN = VALUE NUM*SUIT NUM;

h01891.jpg

При описании констант можно использовать произвольные выражения, в которых также используются числа или константы.

Такой подход очень удобен тем, что при изменении, например, числа мастей не надо вручную менять связанные с этим значением друге константы, например размер колоды — он просто будет пересчитан автоматически.

Колод для пасьянса часто требуется не одна, а две. Число колод и суммарное число всех карт опишутся так:

const. PACK_NUM = 2; / / число колод

const PACK_TOTAL = PACK_NUM*PACK_LEN; // общее число карт

Теперь можно определить еще две вспомогательные константы — значения короля и туза:

const KING = 12; // король const АСЕ = 0; // туз

Часто бывает удобно обращаться к картам по их мнемоническим^названиям, а конкретные значения от игре к игре могут меняться.

Описание констант надо разместить в начале файла CardUnith, непосредственно перед описанием класса TCard,

189