Реализация карты

Реализации всех методов записываются в файле CardUnit.cpp.

При инициализации карты внутренним переменным класса просто присваиваются значения параметров метода InitQ. Признак наличия карты в колоде Is устанавливается равным true (да).

void TCard::Init(int suit, int value)

{•

Suit = suit;

Value = value;

Is = true;

}

Методы, предназначенные для получения значений Suit и Value, можно записать одной строкой: ,

int TCard::GetSuit() { return Suit; } int TCard::GetValue() { return Value; }

Конструируем колоду с помощью вложенных циклов

Конструктор должен присвоить оригинальные значения картам двух колод (первая колода от 0 до 51, вторая — от 52 до 103). Можно сформировать один цикл со счетчиком, который пробежится по всему массиву карт, но такой подход плох тем, что процесс определения, какой должны быть масть и значение очередной карты одной из двух колод, весьма сложен и неочевиден. Гораздо проще последовательно перебрать все масти (от 0 до 3), а для каждой из них — перебрать все значения карт (от 0 до 12). В итоге получится 4*13 = 52 карты, целая колода.

Опишем счетчики масти и значений:

int suit, value;

Цикл перебора четырех мастей запишется так:

for( suit = 0; suit < SUIT_NUM; suit ++ ) -{ }

Внутри этого цикла надо организовать второй, вложенный цикл, который для текущего значения suit переберет весь диапазон значений карт и выполнит инициализацию очередной карты:

190