21xrx.com
2025-04-14 06:40:12 Monday
文章检索 我的文章 写文章
C++扑克牌游戏:删除一张牌并显示
2023-07-07 02:56:27 深夜i     11     0
C++ 扑克牌游戏 删除 显示

在C++编程中,扑克牌游戏是一个非常有趣的项目。其中,一个常见的任务是删除一张牌并显示剩余的牌。

首先,我们需要定义一个扑克牌的类,包含花色和点数等信息。这个类可以使用枚举类型和结构体实现。

接下来,我们需要创建一副扑克牌,这可以通过一个数组实现。然后,我们可以随机从这副牌中选择一张牌,并将其从数组中删除。

代码示例:

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
enum Suit SPADES ;
enum Rank ACE;
struct Card
  Suit suit;
  Rank rank;
  bool inDeck;
;
class Deck {
  Card deck[52];
public:
  Deck() {
    int card = 0;
    for (int suit = CLUBS; suit <= SPADES; ++suit) {
      for (int rank = ACE; rank <= KING; ++rank) {
        deck[card].suit = static_cast<Suit>(suit);
        deck[card].rank = static_cast<Rank>(rank);
        deck[card].inDeck = true;
        ++card;
      }
    }
   }
  Card getCard() {
    int remainingCards = 0;
    for (int i = 0; i < 52; ++i) {
      if (deck[i].inDeck) {
        ++remainingCards;
      }
    }
    if (remainingCards == 0) {
      exit(1);
    }
    int cardIdx = rand() % 52;
    while (!deck[cardIdx].inDeck) {
      cardIdx = rand() % 52;
    }
    Card selectedCard = deck[cardIdx];
    deck[cardIdx].inDeck = false;
    return selectedCard;
  } 
};
int main() {
  srand(static_cast<unsigned int>(time(0)));
  Deck deck;
  cout << "Remaining cards in deck:\n";
  for (int i = 0; i < 51; ++i) {
    Card nextCard = deck.getCard();
    cout << " " << nextCard.rank << " of " << nextCard.suit << endl;
  }
  cout << "\n\nRemoving the last card:\n";
  Card lastCard = deck.getCard();
  cout << " " << lastCard.rank << " of " << lastCard.suit << endl;
  return 0;
}

在这个示例中,我们首先创建了一个Deck类,该类有一个名为deck的数组成员变量,存储52张牌的信息。getCard()函数用于从牌堆中获取一张随机的牌并将其移除。最后,在主函数中,我们使用getCard()函数获取所有剩余的牌,并打印它们的信息。然后,我们在删除最后一张牌后再次调用getCard()函数,打印所得到的牌的信息。

总之,以上代码演示了如何用C++编写一个扑克牌游戏,并删除一张牌并显示剩余的牌。该示例提供了一个完整的可修改源代码,可用于学习和进一步完善。

  
  

评论区