【问题标题】:JavaScript function explanation for Blackjack game二十一点游戏的JavaScript函数解释
【发布时间】:2014-01-06 22:31:47
【问题描述】:

我一直在 learnstreet 上解决这个二十一点问题:

http://www.learnstreet.com/cg/simple/project/blackjack#get-hint

我被最后一个方法 getStrategy() 卡住了——这里描述了如何完成任务:

“这种方法模拟庄家的策略,以便他知道何时打牌和何时站牌——即何时接受另一张牌并冒“爆牌”和破 21 的风险,或用当前手牌停止并希望他的对手不会击败他的号码。

这是一个特殊的函数,因为它返回的对象本身就是一个函数。 (这怎么疯了?)它接受'n',即庄家手牌的整数分数,此时庄家的策略是击牌或站立。 (二十一点经销商通常会在他的牌总点数少于 17 点时被击中,所以在这种情况下 n 将是 17。)

这个方法需要返回的内容应该是“return function(currenthand){};”的形式在哪里填写花括号 ({}) 内的内容。当前手牌将提供给函数调用,您需要编写一些逻辑,让庄家将当前手牌点数与“n”进行比较。”

LearnStreet 以这种方式实现 getSrategt():

function getstrategy(n) {
    return function(currenthand) {
        return (countpoints(currenthand) < n);
    }
}

getStrategy() 方法在 applyStrategy 方法中调用如下:

/*
This function applies the strategy you define in getstrategy(n): DON'T CHANGE
*/
function applystrategy(hand, n) {
    var strat = getstrategy(n);
    return strat(hand); 
}

谁能解释一下我们为什么要返回 (countpoints(currenthand)

【问题讨论】:

  • @AlienArrays 这不是一个函数中的两个返回。 getstrategy 正在返回一个匿名函数,该函数返回 countpoints(currenthand) &lt; n) 的比较结果,这是一个布尔值。

标签: javascript


【解决方案1】:

countpoints(currenthand) 将返回手中的点数。 n17,如果当前点数少于该数字,庄家将再次下注。基本上,如果当前点数小于17,则继续播放,如果等于或大于,则停止。

【讨论】:

    猜你喜欢
    • 2012-10-16
    • 2023-03-21
    • 2020-05-18
    • 1970-01-01
    • 2015-06-18
    • 2015-08-02
    • 2014-10-22
    • 2022-11-12
    • 2015-06-02
    相关资源
    最近更新 更多