prg-lang-2 / final / BlackJack / card.h
card.h
Raw
#ifndef CARD_H
#define CARD_H

/**
 * @brief トランプカードの構造体
 *
 * 1枚のカードを表す構造体。
 */
typedef struct
{
    char suit; /**< カードのスート: 'S'(スペード), 'H'(ハート), 'D'(ダイヤ), 'C'(クラブ) */
    int rank;  /**< カードの数字: 1(エース)から13(キング) */
} Card;

/**
 * @brief デッキの初期化
 *
 * 標準的な52枚のカードデッキを順番に作成する。
 * 全てのスートについて1-13の数字を設定。
 *
 * @param deck 52枚のカード配列へのポインタ
 */
void initDeck(Card *deck);

/**
 * @brief デッキのシャッフル
 *
 * フィッシャー・イェーツのアルゴリズムを使用して
 * カードをランダムに並び替える。
 *
 * @param deck 52枚のカード配列へのポインタ
 */
void shuffleDeck(Card *deck);

/**
 * @brief カードの表示
 *
 * アスキー文字とカラー表示を使用してカードを表示する。
 * ハートとダイヤは赤色、スペードとクラブは黒色で表示。
 *
 * @param card 表示するカード
 */
void printCard(const Card card);

/**
 * @brief カードの裏面表示
 *
 * アスキー文字を使用してカードの裏面を表示する。
 */
void printCardBack();

#endif