⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cards.cpp

📁 国外网站上的一些精典的C程序
💻 CPP
字号:
/***  CARDS.CPP - Playing card classes****  public domain by Bob Stout*/#include <stddef.h>#include <stdlib.h>#include <time.h>#include <string.h>#include "cards.hpp"const char *suits[] = {"Diamonds", "Clubs", "Hearts", "Spades"};const char *cards[] = {"Ace", "Deuce", "Trey", "4", "5", "6", "7", "8", "9",                       "10", "Jack", "Queen", "King"};inline card::card(void){      rank_ = Rank_Error;      suit_ = Suit_Error;}inline card::card(cardSuit s, cardRank r){      rank_ = r;      suit_ = s;}inline cardRank card::rank(void){      return rank_;}inline cardSuit card::suit(void){      return suit_;}inline char * card::rankText(void){      return (char *)cards[(int)rank_ - 1];}inline char * card::suitText(void){      return (char *)suits[(int)suit_];}inline void card::set_rank(cardRank r){      rank_ = r;}inline void card::set_suit(cardSuit s){      suit_ = s;}inline void card::set_card(cardSuit s, cardRank r){      rank_ = r;      suit_ = s;}inline void card::get_card(cardSuit &s, cardRank &r){      r = rank_;      s = suit_;}deck::deck(void){      int n = 0;      for (int s = int(Diamond); s <= int(Spade); ++s)      {            for (int c = int(Ace); c <= int(King); ++c)            {                  deck::card_[n].set_rank(cardRank(c));                  deck::card_[n].set_suit(cardSuit(s));                  ++n;            }      }      top = 0;}inline void deck::deal(class card &c){      if (top < Deck_Size)            c = deck::card_[top++];}inline int deck::cards_left(void){      return int(Deck_Size - top);}void deck::shuffle(void){      int used[Deck_Size], posn = 0;      srand((unsigned)time(NULL) | 1);      memset(used, 0, Deck_Size * sizeof(int));      for (int s = int(Diamond); s <= int(Spade); ++s)      {            for (int c = int(Ace); c <= int(King); ++c)            {                  posn = (posn + rand()) % Deck_Size;                  while (used[posn])                        posn = ++posn % Deck_Size;                  deck::card_[posn].set_rank(cardRank(c));                  deck::card_[posn].set_suit(cardSuit(s));                  used[posn] = -1;            }      }      top = 0;}#ifdef TEST#include <iostream.h>void showem(class deck &d);main(){      class deck d;      cout << "Deck initially:" << endl << endl;      showem(d);      d.shuffle();      cout << endl << "After shuffling:" << endl << endl;      showem(d);      return EXIT_SUCCESS;}void showem(class deck &d){      for (int i = 0; i <= Deck_Size; ++i)      {            class card card_;            if (0 < d.cards_left())            {                  d.deal(card_);                  cout << "Card #";                  cout.width(2);                  cout.setf(ios::left, ios::adjustfield);                  cout << (i + 1) << " - " <<                        card_.rankText() << " of " <<                        card_.suitText() << endl;            }            else  cout << "No cards left" << endl;      }}#endif // TEST

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -