Реализация карты
Реализации всех методов записываются в файле 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