這裏中訪問局部變量是我寫的代碼:另一個功能
function p_deal(id) {
var card1_val = Math.floor(Math.random() * deck.length);
var card2_val = Math.floor(Math.random() * deck.length);
var card1 = deck[card1_val];
var card2 = deck[card2_val];
var hand = card1 + ", " + card2;
var res = card1_val + card2_val;
document.getElementById(id).innerHTML = hand;
和
function hit(id) {
if (bucket == 0) {
bucket = " ";
}
var card3_val = Math.floor(Math.random() * deck.length);
var nhand = deck[card3_val];
bucket = bucket + " " + nhand + ", ";
bucket_val = bucket_val + card1_val + card2_val + card3_val;
if (bucket_val >= 22) {
var r = confirm("Bust! By " + nhand);
if (r == true) {
refresh();
}
else {
refresh();
}
}
document.getElementById(id).innerHTML = bucket;
light = light + 1;
if (light == 5) {
alert("Five Card Blackjack! You Win!");
refresh();
}
}
桶VAL內的card_val變量是從p_deal(ID)功能。爲了使程序正常工作,每次調用這兩個函數時,card_val值必須是相同的,但每次調用該函數時都需要重新生成它們(因此多個玩家可以有不同的手)。但是,作爲局部變量,我發現很難在另一個函數中使用它們。我能在這裏做什麼?
您可能希望找到 「洗牌」 的甲板比'Math.floor的一種更好的方式(的Math.random()* deck.length)'。我可以建議洗牌嗎? – Eric
@埃裏克 - 你能詳細說一下嗎?你有關於如何更好地洗牌的任何想法? – dopatraman
「洗牌」的方法可以連續兩次選取同一張牌。相反,你應該按照隨機的順序對卡組進行排序,就像真正的洗牌一樣。這樣做的最好方法是使用[Fisher-Yates shuffle](http://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle)。要畫一張牌,只需['.shift()'](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/shift)即可。 – Eric