我一直在学习这个二十一点问题:
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);
}
}
在applyStrategy方法中调用getStrategy()方法,如下所示:
/*
This function applies the strategy you define in getstrategy(n): DON'T CHANGE
*/
function applystrategy(hand, n) {
var strat = getstrategy(n);
return strat(hand);
}
任何人都可以向我解释我们为什么要回来(计数点(当前)&lt; n)?
答案 0 :(得分:1)
countpoints(currenthand)
将返回手中的点数。 n
是17
,其中,如果当前点数小于,则经销商将再次点击。基本上,如果当前点数小于17
,则继续播放,如果等于或大于等于,则停止播放。