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) 왜 갑판을 섞는 루프에 item # seed 대신 '(seed + 1)'을 사용합니까? 원래 루프로 0 ~ 51을 사용했기 때문에? 왜 1-52를 사용하지 않고 씨앗을 그대로 두십시오? 다시 한 번 감사드립니다! – nebmuzik
주된 이유는 논리적 인간 지점이나 AppleScript 관점에서가 아니라 이진 관점에서 카드에 접근하는 것입니다. 왜냐하면 2 비트 (0-3)로 카드 유형을 사용할 때 카드 값에 동일한 시작 값을 사용하는 것이 더 좋을 것이라고 생각했기 때문입니다. 원하는대로 변경할 수 있습니다. 카드 값을 1에서 시작하려면 카드 값이 4 위치에서 시작해야하므로 바이트 값 100이 네 번째 카드 유형이므로 다른 비트 스위프트 (mod 8 및 div 8)를 사용해야 함을 기억하십시오 (bin 1000 = dec 8) –