2014-01-06 98 views
0

我一直在這個大酒杯問題上learnstreet:的21點遊戲JavaScript函數說明

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)< N)向我解釋

+0

@AlienArrays這不是一個函數中的兩個返回值。 'getstrategy'返回一個匿名函數,返回一個布爾值'countpoints(currenthand) crush

回答

1

countpoints(currenthand)將返回手中的點數。 n17,如果當前點數少於該數字,莊家將再次擊中。基本上,如果當前點數小於17,繼續播放,如果等於或大於此值,則停止播放。