【问题标题】:BlackJack cards vector c++/random numbers二十一点卡矢量 c++/随机数
【发布时间】:2011-01-17 17:24:22
【问题描述】:

我在网站上关注了一些答案,但我仍然有一个问题:在我运行程序时生成我的卡片矢量后,卡号完全关闭: 第一张卡:100 第二张牌:22 第三:0 第四:0 第五:28 等等

这是我的代码:

    enum numar {AS=11 ,DOI=2, TREI=3, PATRU=4, CINCI=5, SASE=6, SAPTE=7, OPT=8,
NOUA=9, ZECE=10, VALET=10, DAMA=10, REGE=10,
PrimulNumar=AS, UltimulNumar=REGE};
enum culoare {INIMA, CAROU, NEGRU, TREFLA, PrimaCuloare=INIMA,
UltimaCuloare=TREFLA};



 int k=0;
        for (int r = PrimulNumar; r <= UltimulNumar; ++r) {
                for (int s = PrimaCuloare; s <= UltimaCuloare; s++) {
                        pc[k]= new Carte((numar)r, (culoare)s, false);
                        k++;

我该怎么办?

【问题讨论】:

  • 代码是罗马尼亚语,但我想你会明白的。
  • 首先我不确定在枚举中创建两个具有相同值的项目是否有意义。你能解释一下你想做什么吗?
  • @Elalfer: enum numar 包含卡片等级。王牌 = 11,二 = 2,等等。十 == 杰克 == 女王 == 国王 == 10。
  • 这是作业吗?一方面,PrimulNumar=11 和 UltimulNumar=10。我认为您的数组只是未初始化 ^^
  • 所有enum 在大多数语言中只是声明一堆整数常量的一种方便方式。

标签: c++ enums blackjack


【解决方案1】:

所以...用值替换枚举:

int k = 0;
for (int r = 11; r <= 10; ++r)
  for (int s = 0; s <= 3; ++s
  {
  }

看到问题了吗?

【讨论】:

  • 是的,我看到了问题所在。无论如何,我该怎么做?我从这里得到了想法:stackoverflow.com/questions/2941890/c-enum-in-foreach
  • 请注意,他们没有为枚举设置值。这是一个完全改变结果的重要细节。如果您无法理解原因,请查看 C++ 中的枚举:enel.ucalgary.ca/People/Norman/enel315_winter1997/enum_types
  • 但是我不明白如何给十个杰克皇后和国王赋予相同的价值......这就是我试图赋予价值的原因。
  • 如果这样做,您将无法区分它们。
  • @Emil:您可以让编译器分配枚举值(因此 AS==0,DOI==2, ... REGE==12),然后使用分数数组进行排名,即int scores[] = {11, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10 10};。然后 score[AS] == 11,scores[DAMA] == 10,等等。
猜你喜欢
  • 2012-06-23
  • 1970-01-01
  • 2015-06-08
  • 1970-01-01
  • 2014-08-12
  • 1970-01-01
  • 2016-11-08
  • 2020-07-17
  • 2023-03-21
相关资源
最近更新 更多