21xrx.com
2024-06-03 04:36:39 Monday
登录
文章检索 我的文章 写文章
C++扑克牌游戏:删除一张牌并显示
2023-07-07 02:56:27 深夜i     --     --
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++编写一个扑克牌游戏,并删除一张牌并显示剩余的牌。该示例提供了一个完整的可修改源代码,可用于学习和进一步完善。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复