JavaScript二十一点游戏编码问题

时间:2015-05-21 05:31:04

标签: javascript blackjack

我班上的作业要求我写一个非常基本的javascript二十一点游戏。经销商的手牌自动生成17到21之间的值,因此只有玩家才能决定做什么。

我为经销商的手以及随机生成器创建了一个随机生成器,根据分配的要求产生值1-13(Ace-King)。但是值11和12和13对应于面部卡(杰克/女王/王),它们都明显具有相等的值10。但是,如何将值11-13重新分配为值为10?

我也无法弄清楚如何为玩家编写决策结构。基本上寻找能给我以下输出的东西:

你想要一张卡吗? (玩家输入答案) 你收到了7.你想要另一张卡吗? (玩家输入答案) 你收到了一位国王。你的总数是17.你想要另一张卡吗?

等...

我不是在寻找任何人为我编写完整的代码,只是寻找一个开始,因为我甚至难以确定从哪里开始这一切。赋值的设计结构非常开放,但它应该保持在JavaScript的最简单/基本级别。非常感谢任何帮助。谢谢!

2 个答案:

答案 0 :(得分:1)

  
      
  1. 如何重置值11-13以使其值为10?
  2.   
  1. 使用if语句检查数字是否在11-13之间,并将其分配给10
  2.   
        
    1. 基本上寻找能给我以下输出的东西。
    2.   
    1. 你的结构看起来像while循环可以工作。 (当玩家需要一张牌时,继续将它们交给他/她并将其添加到他们的总数中。如果他们破产,则结束while循环;如果选择不再拿另一张牌退出while循环并比较谁有更好的分数。经销商或玩家。
    2. 祝你好运。

      编辑:

       if(playerCard >=10){
          playerCard = 10;
       }
      

      你在这里不需要其他人,因为如果玩家卡< 10无论如何你都不想改变它。

答案 1 :(得分:0)

关于卡片值,我建议将卡片存储为对象以保存其值及其类型。

var cards = [ { name: 'Ace', value: 1 },
              { name: '2', value: 2 },
              { name: '3', value: 3 },
              { name: '4', value: 4 },
              { name: '5', value: 5 },
              { name: '6', value: 6 },
              { name: '7', value: 7 },
              { name: '8', value: 8 },
              { name: '9', value: 9 },
              { name: '10', value: 10 },
              { name: 'Jack', value: 11 },
              { name: 'Queen', value: 12 },
              { name: 'King', value: 13 }
            ];

然后您可以通过以下方式访问 Jack

var name = card[9].name;
var value = card[9].value;

我建议在 ace 为1或11的情况下包含另一个名为alt值的字段。

例如

{ name: 'Ace', value: 1, altValue = 11 }

附加逻辑 如果游戏是基于一副牌,我会映射每一张可能的卡并将其存储在卡片阵列中,并与之相符。

例如

var cards = [ { name: 'Ace', value: 1 altValue: 11, suit: 'Hearts' },
              { name: '2', value: 2, suit: 'Hearts' }...

然后我会通过从卡片阵列中移除卡片,从游戏中删除卡片。