首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript blackjack逻辑

Javascript blackjack逻辑
EN

Stack Overflow用户
提问于 2015-08-28 01:03:20
回答 2查看 183关注 0票数 0

我检查一张卡是否已经被使用的逻辑是错误的。

有人能帮帮我吗。(卡片来自一个命中函数,它只是选择一个新的随机函数)。

代码语言:javascript
复制
    function checkCard(card) {
    //if card = card in used array, select new card
    for (i = 0; i <= userCards.length; i++) {
        if (userCards[i] == card) {
            //selectCards(card)
            var newRank = Math.floor(Math.random() * 13);
            var newSuit = Math.floor(Math.random() * 4);
            var card = (rank[newRank] + suit[newSuit]);
            checkCard(card);
            //document.getElementById('userCards').innerHTML += "<td id=" + "UserCard" + "><img src=" + "includes/images/cards/" + card + ".png >";
            //userCards[userCards.length] = card;
            //userTotal();
        } else {
            userCards[userIndex] = card;
            document.getElementById('userCards').innerHTML += "<td id=" + "UserCard" + "><img src=" + "includes/images/cards/" + card + ".png >";
            userTotal();
        }
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-30 03:00:24

您缺少了一条返回语句。如果必须使用递归,请尝试以下逻辑:

代码语言:javascript
复制
function checkCard(card)
{    //if card = card in used array, select new card
    for (i = 0; i < userCards.length; i++)
    {
            if (userCards[i] == card)
            {   //selectCards(card)
                var newRank = Math.floor(Math.random() * 13);
                var newSuit = Math.floor(Math.random() * 4);
                var card = (rank[newRank] + suit[newSuit]);
                checkCard(card);
            return;  // new card was assigned in recursive call above
            }
   }
   // card is unused, assign now
   userCards[userCards.length] = card;
   document.getElementById('userCards').innerHTML += "<td id=" + "UserCard" + "><img src=" + "includes/images/cards/" + card + ".png >";
   userTotal();
   return;      // new card was assigned here.
}
票数 0
EN

Stack Overflow用户

发布于 2015-08-30 02:32:00

在for循环中,如果您这样做了

代码语言:javascript
复制
i <= userCards.length 

您将通过数组的索引。这应该是:

代码语言:javascript
复制
i < userCards[i].length

另外,我不明白你的基本情况是什么,允许你停止递归。您只是创建一些随机的卡片,回忆您的函数,然后检查它是否在使用的数组中?如果是的话,您将制作另一个随机卡,如果不是,则将其添加到使用的数组中,然后调用不带参数的userTotal()。每次递归调用函数时,它都从0开始,并再次检查整个数组。

您的逻辑是检查是否已经使用了一张卡,而不是经过索引,这是没有错的。但当然,一旦你发现信息似乎是错的,你想要做的是什么。

试着更详细地解释你想要做的事情。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32261797

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档