home *** CD-ROM | disk | FTP | other *** search
- '
- ' *** TYPE_EX.BAS -- TYPE statement programming example
- '
- TYPE Card
- Value AS INTEGER
- Suit AS STRING*9
- END TYPE
-
- DEFINT A-Z
- ' Define the Deck as a 52-element array of Cards.
- DIM Deck(1 TO 52) AS Card
-
- ' Build, shuffle, and deal the top five cards.
- CALL BuildDeck(Deck())
- CALL Shuffle(Deck())
- FOR I%=1 TO 5
- CALL ShowCard(Deck(I%))
- NEXT I%
-
- ' Build the deck--fill the array of Cards with
- ' appropriate values.
- SUB BuildDeck(Deck(1) AS Card) STATIC
- DIM Suits(4) AS STRING*9
-
- Suits(1)="Hearts"
- Suits(2)="Clubs"
- Suits(3)="Diamonds"
- Suits(4)="Spades"
- ' This loop controls the suit.
- FOR I%=1 TO 4
- ' This loop controls the face value.
- FOR J%=1 TO 13
- ' Figure out which card (1...52) you're creating.
- CardNum%=J%+(I%-1)*13
- ' Place the face value and suit into the Card.
- Deck(CardNum%).Value=J%
- Deck(CardNum%).Suit=Suits(I%)
- NEXT J%
- NEXT I%
-
- END SUB
-
- ' Shuffle a deck (an array containing Card elements).
- SUB Shuffle(Deck(1) AS Card) STATIC
-
- RANDOMIZE TIMER
- ' Shuffle by transposing 1000 randomly selected pairs of cards.
- FOR I%=1 TO 1000
- CardOne%=INT(52*RND+1)
- CardTwo%=INT(52*RND+1)
- ' Notice that SWAP works on arrays of user types.
- SWAP Deck(CardOne%),Deck(CardTwo%)
- NEXT I%
-
- END SUB
-
- ' Display a single card by converting and printing the
- ' face value and the suit.
- SUB ShowCard (SingleCard AS Card) STATIC
-
- SELECT CASE SingleCard.Value
- CASE 13
- PRINT "King ";
- CASE 12
- PRINT "Queen";
- CASE 11
- PRINT "Jack ";
- CASE 1
- PRINT "Ace ";
- CASE ELSE
- PRINT USING " ## ";SingleCard.Value;
- END SELECT
-
- PRINT " ";SingleCard.Suit
-
- END SUB