Классы смущают меня! Для этого конкретного задания мы должны сделать классическую программу «Карты в колоде». Мы должны сделать два класса, один называется «Карта», а другой - «Палуба». Сейчас я сделал большую часть этого, но концепция, кажется, ускользает от меня.
Когда мы вызываем конструктор по умолчанию для класса Card, все 52 карты должны быть созданы так, чтобы класс Deck мог использовать эти объекты и ... хорошо создать колоду! Теперь я посетил сеанс с нашей TA, и он подчеркнул тот факт, что конструктор по умолчанию должен инициализировать значения, в то время как класс Deck берет эти объекты и проходит по ним циклически, чтобы использовать функцию, которая присваивает реальные значения карт объектам Card.
Мой вопрос таков: каков наилучший подход для создания этих объектов, чтобы колода могла ссылаться на них? Моя идея сейчас состоит в том, чтобы создать фиксированный массив с именем initialCard [4] [13]. Оттуда класс Deck выберет значение - скажем, «initialCard [0] [0]» и назначит его на туз пик только из строки и столбца двумерного массива. Тем не менее, мой ТА продолжает говорить «создай массив объектов Card». Что он мог этим сказать? Я немного понимаю, но я просто не уверен ... у кого-нибудь есть идеи? Спасибо!
Может быть, это поможет; прямо со страницы задания:
Класс вашей карты должен иметь публичные функции получения и установки для
обе эти переменные (getValue, setValue и т. д.), а также
функция, которая будет возвращать к-строковое представление карты. (Вы
если хотите, можете вызвать его в CString.)
следующим образом:
void toCString (char cardString []) INPUT: массив символов для хранения
выходной OUTPUT: NONE Эта функция должна возвращать символьную строку
представляющий объект карты. Эта строка должна иметь следующее
Форма: два символа, за которыми следует третий нулевой байт. Первый
персонаж представляет костюм; вторая представляет ценность. Костюмы должны
быть «S», «H», «C» или «D» для пиков, сердец,
клубы, бриллианты. Второй символ представляет значение: «A» для Ace,
2-9 для пронумерованных карт, «T» для 10, «J» для Джека, «Q» для Королевы »,« K »
для короля. Несколько примеров: 2 пики = 'S2' 10 червей = 'HT' Джек
бриллиантов = 'DJ' Королева клубов = 'CQ' Пиковый туз = 'SA' и т. д.
В дополнение к этому у вас должен быть как минимум конструктор по умолчанию для инициализации значений. Вы можете создавать другие
конструкторы (возможно, тот, который инициализирует карту из ее C-строки
представление?) но это не обязательно.
Класс колоды: В дополнение к классу вашей карты, вам нужно будет создать
Класс колоды для инкапсуляции всех ваших карточных объектов. В этом объекте вы
должен иметь закрытый член многомерного массива (размером SUITS
ЦЕННОСТИ) объектов Вашей Карты. Когда объект Deck создан, вы
он должен инициализировать многомерный массив карт. Карта
костюмы представлены перечислимым типом; значения карты
представлен целым числом от 1 до 13 (1 - туз, 2-10 - пронумерованы
значения, 11 - это Джек, 12 - это Королева, а 13 - Король).
Ваш конструктор должен перебрать многомерный массив и
инициализировать все значения, чтобы полная колода карт
представлена.