在Applescript中使用一個簡單的循環來創建將根據已聲明的預定義數組分配的變量。作業是隨機的。目標是創建一個變量,其中一個子集將數組的一部分分配給變量中的特定部分。我需要跟蹤該部分後來結束的位置並引用它。問題是變量的語法之一。 例如,如果我想洗牌的撲克牌,它會是這個樣子:AppleScript中的嵌套變量
set cardlist to {"Ace of Spades", "2 of Spades", "3 of Spades", "4 of Spades", "5 of Spades", "6 of Spades", "7 of Spades", "8 of Spades", "9 of Spades", "10 of Spades", "Jack of Spades", "Queen of Spades", "King of Spades", "Ace of Diamonds", "2 of Diamonds", "3 of Diamonds", "4 of Diamonds", "5 of Diamonds", "6 of Diamonds", "7 of Diamonds", "8 of Diamonds", "9 of Diamonds", "10 of Diamonds", "Jack of Diamonds", "Queen of Diamonds", "King of Diamonds", "Ace of Hearts", "2 of Hearts", "3 of Hearts", "4 of Hearts", "5 of Hearts", "6 of Hearts", "7 of Hearts", "8 of Hearts", "9 of Hearts", "10 of Hearts", "Jack of Hearts", "Queen of Hearts", "King of Hearts", "Ace of Clubs", "2 of Clubs", "3 of Clubs", "4 of Clubs", "5 of Clubs", "6 of Clubs", "7 of Clubs", "8 of Clubs", "9 of Clubs", "10 of Clubs", "Jack of Clubs", "Queen of Clubs", "King of Clubs"}
-- shuffle deck
set deckcount to 1
set deckset to random number from 1 to 52
repeat 52 times
set deskset to random number from 1 to 52
set deckcard(subset) to item deckset in cardlist
set deckcount to deckcount + 1
set deckset to random number from 1 to 52
end repeat
我知道我會擔心與隨機#發電機重複,一旦我得到的變量問題解決了,我可以做到這一點。但是我需要的是沿着子集的方向。例如(deckcard.1和deckcard.5)。我只是無法弄清楚如何讓它起作用。我試過並閱讀了所有我能找到的東西。
預先感謝您。
感謝您的輸入!我原先想過分別將變量分配給卡片的花色和價值,所以很高興知道我的直覺是準確的。 – nebmuzik
感謝您的輸入!我原先想過分別將變量分配給卡片的花色和價值,所以很高興知道我的直覺是準確的。我很確定我已經把我的頭圍繞在這個大部分上面,但是我對你的代碼有幾個問題。 1)爲什麼使用'(種子+ 1)'代替項目#種子作爲洗牌套牌的循環?因爲您使用0到51作爲您的原始循環?爲什麼不使用1-52並留下種子?再次感謝! – nebmuzik
主要原因是從二進制角度而不是從邏輯人類角度或AppleScript的角度來看待卡片。因爲當使用2比特卡片類型(0 - 3)時,我認爲使用卡片值的相同起始值會更好。你可以改變你的喜好。記住,如果你想從1開始卡類型,並且你需要使用其他的比特迅雷(mod 8和div 8),因爲字節值100是第四種卡類型,所以你的卡值必須從4開始(bin 1000 = dec 8) –