2014-01-06 6 views
0

Я работаю над этой проблемой блэкджек на learnstreet:JavaScript функция объяснение игры Блэкджек

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

Я застрял на последнем методе getStrategy() - вот описание того, как задача состоит в том, чтобы быть завершено:

«Этот метод имитирует стратегию дилера, так что он знает, когда нужно ударить и когда стоит стоять, т. е. когда нужно принять еще одну ничью из колоды и рискнуть« разориться »и сломать 21, или остановиться с текущая рука и надеясь, что его противник не побьет его номер.

Это специальная функция, в которой он возвращает объект, который является самой функцией. (Как это для ума?) Он принимает «n», целочисленный балл руки дилера, в этот момент стратегия дилера должна ударить или встать. (Блэкджек-дилеры обычно получают хиты, когда его карты составляют менее 17 пунктов, поэтому в этом случае n будет 17.)

Что нужно вернуть в этом методе, должно быть в форме «return function (currenthand) { };» где вы заполняете то, что находится внутри фигурных скобок ({}). Текущая рука будет подаваться в вызов функции, и вам нужно будет написать некоторую логику, где дилер сравнивает точки текущей руки с «п» «

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) < п)

?
+0

@AlienArrays Это не два возврата в одной функции. 'getstrategy' возвращает анонимную функцию, которая возвращает сравнение' countpoints (currenthand) crush

ответ

1

countpoints(currenthand) вернет количество очков в руке. n - 17, номер, где, если текущие точки меньше, дилер совершает другой удар. В принципе, если текущие точки меньше 17, продолжайте играть, если он равен или больше, остановите.

Смежные вопросы