2

Newgame関数からdeckshuffle関数にdeck(52)配列を渡すにはどうすればよいですか

FUNCTION newgame
   'New game
   RANDOMIZE TIMER
   CALL cardsuit
   'heart$ = CHR$(3): diamond$ = CHR$(4): club$ = CHR$(5): spade$ = CHR$(6)
   quitgame = 0
   DIM playercards(maxhand), dealercards(maxhand), deck(52)
END FUNCTION
FUNCTION deckshuffle
   'first card
   CALL carddeck(deck(1))
   deck(1) = INT(RND * 52)
   deckindex = 2
   DO
      DO
         cardok = 1
         newcard = INT(RND * 52)
         FOR j = 1 TO (deckindex - 1) STEP 1
            IF newcard = deck(j) THEN
               cardok = 0
               EXIT FOR
            END IF
         NEXT j
      LOOP UNTIL cardok = 1
      deck(deckindex) = newcard
      deckindex = deckindex + 1
   LOOP UNTIL deckindex > 52
   deckindex = 1
   PRINT "* * * DECK SHUFFLED * * *"
END FUNCTION

現在、プログラムを実行しようとすると「配列が定義されていません」というエラーが表示されます。

4

4 に答える 4

0

配列関数を使用したデッキ シャッフル プログラムの例を次に示します。

DIM deck(1 TO 54)
CONST ShuffleTimes = 10
FOR L = 1 TO 54
    deck(L) = L
NEXT
CALL shuffle(deck())
FOR L = 1 TO 54
    PRINT deck(L);
NEXT
END
SUB shuffle (deck())
    FOR L = 1 TO ShuffleTimes
        X = INT(RND * 54 + 1)
        Y = INT(RND * 54 + 1)
        SWAP deck(X), deck(Y)
    NEXT
END SUB
于 2019-12-07T06:34:17.197 に答える
0

カードのデッキをランダム化するサブルーチンは次のとおりです。

' init deck
DIM deck(1 TO 54)
' store deck
FOR L = 1 TO 54
    deck(L) = L
NEXT
' randomize deck
FOR L = 1 TO 20
    X = INT(RND * 54 + 1)
    Y = INT(RND * 54 + 1)
    SWAP deck(X), deck(Y)
NEXT
' spades/hearts/diamonds/clubs
FOR L = 1 TO 54
    X = deck(L)
    SELECT CASE X
        CASE 1 TO 13
            M = X
            S$ = "spades"
        CASE 14 TO 26
            M = X - 13
            S$ = "hearts"
        CASE 27 TO 39
            M = X - 26
            S$ = "diamonds"
        CASE 40 TO 52
            M = X - 39
            S$ = "clubs"
        CASE 53, 54
            PRINT "Joker"
            M = 0
    END SELECT
    SELECT CASE M
        CASE 1 ' ace
            PRINT "Ace of "; S$
        CASE 2 TO 10 ' 2-10
            PRINT M; " of "; S$
        CASE 11 ' jack
            PRINT "Jack of "; S$
        CASE 12 ' queen
            PRINT "Queen of "; S$
        CASE 13 ' king
            PRINT "King of "; S$
    END SELECT
NEXT
END
于 2019-12-07T07:54:22.943 に答える