我正在嘗試構建一個 Black Jack 游戲并前進到應該洗牌的功能,我有點掙扎只是為了進行適當的“洗牌”并最終在網上尋找。我確實找到了一些我想要的代碼,但是沒有提到它到底做了什么,有人可以幫忙嗎?
const shuffleDeck = () => {
for (let i = 0; i < deck.length; i ) {
let shuffle = Math.floor(Math.random() * (deck.length));
let temp = deck[i];
// here it assigns the iterated elements to newly created temp.
deck[i] = deck[shuffle];
// here uses the shuffle variable on the iterated deck[i]?
deck[shuffle] = temp;
// assigns the shuffled deck to temp? What does temp do after??
}
};
我已經設法創建了 52 張卡片組,所以我只是一步一步地進行。
uj5u.com熱心網友回復:
temp 變數只是作為占位符來交換兩張卡的位置。想想在藍色杯子里放一杯牛奶,在紅色杯子里放一杯咖啡。你想把咖啡放在藍色杯子里,把牛奶放在紅色杯子里。
您將取一個綠色杯子(溫度)并將牛奶放入綠色杯子中,然后將咖啡放入藍色杯子(牛奶所在的位置),最后將綠色杯子中的牛奶放入紅色杯子中。
//loops throug each card
for (let i = 0; i < deck.length; i ) {
// picks the random number between 0 and length of the deck
let shuffle = Math.floor(Math.random() * (deck.length));
//uses 3 buckets method to swap cards
let temp = deck[i]; //holds one card in temp variable
deck[i] = deck[shuffle];
deck[shuffle] = temp;
}
uj5u.com熱心網友回復:
該函式回圈遍歷陣列,并在每次迭代中將當前元素與隨機位置上的元素切換(在此處選擇:)let shuffle = Math.floor(Math.random() * (deck.length));。該temp變數僅用于在兩個值之間進行值切換。
假設您有兩個值存盤在變數A = 1和B = 2中,要在變數之間切換值,您需要第三個變數,因為沒有辦法在不丟失任何一個值的情況下更改它們,所以這些是步驟:
// save one of the values to a temp variable (we save A)
temp = A
// Put the value of B in A (after this step A = 2 and B = 2
// if you hadn't saved the value of A you would have lost it )
A = B
// then restore the value that was in A to B
B = temp
// you don't care about the value of temp after this... just that A and B are now switched
這相當于您的代碼的這一部分:
let temp = deck[i];
deck[i] = deck[shuffle];
deck[shuffle] = temp;
當您對陣列中的每個元素執行此操作時,可以保證陣列應該被打亂
切換變數的更簡單方法
在 javascript 中可以在沒有臨時變數的情況下在一條指令中切換變數,如下所示:
[a, b] = [b, a]
// for arrays switch element in position i with position j
[array[i], array[j]] = [array[j], array[i]];
uj5u.com熱心網友回復:
我在下面有一張圖片,直觀地顯示了這段代碼在做什么,本質上它正在遍歷每個索引,選擇一個隨機的其他索引,并交換值。這永遠不會添加或洗掉值,只是從字面上洗牌。
藍色箭頭代表電流指數 i,綠色箭頭代表變數 current。

然后藍色箭頭移動到下一個索引并重復直到它穿過整個甲板。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/503660.html
標籤:javascript 功能 循环
上一篇:學習ASP.NET Core Blazor編程系列二——第一個Blazor應用程式(中)
下一篇:意外的WS令牌:“”
