home *** CD-ROM | disk | FTP | other *** search
- ============================================================================
-
- VBCARDS.DLL - Version 1.01P
-
- T h e G r i n n i n g J a c k D e c k
-
- Written by Richard R. Sands
- CIS 70274,103
-
- ============================================================================
-
- The VBCARDS.DLL is a library of routines that allows card-game
- applications to share common bitmap resources. It also provides some
- basic support routines.
-
- Personally, I'm tired of getting card games, each that contain a copy of
- their own bitmaps for the cards. Hopefully, this can form a basis for
- writing card games that can share the images thus saving diskspace and
- memory.
-
- This library contains the basic card values Ace through King, a Joker, and
- seven card back styles. It also includes a couple of misc. cards used to
- indicate (non-)empty decks (a green X and a green O card).
-
- The compiled DLL is released to the Public Domain. Turbo Pascal for
- Windows Source code is available from me for a nominal $5.00. You may not
- distribute the DLL source code.
-
- I am completely open to suggestions for improvement, bugs, and, of course,
- critisisms (who me?). Send them to this forum or use email.
-
- Although the DLL is public domain, I *sure* would like to see some of the
- games that is created using this DLL!
-
-
- ============================================================================
- IMPLEMENTATION NOTES
- ============================================================================
- 1. Note that the DLL, when a card image routine is called, will place the
- card into the clipboard. So don't try to keep something in the Clip-
- board while playing a card game.
-
- 2. Set the BorderStyle property of each card to 0 - No Border
-
- 3. Given an array:
- Option Base 1
- Global Deck(52) As Integer
- then a these will work:
-
- Sub InitDeck ()
- For I = 1 to 52
- Deck(i) = i
- Next I
- End Sub
-
- Sub ShuffleDeck ()
- For I = 1 to 10
- For J = 1 to 52
- K = Int( 1 + (52 * Rnd))
- Temp = Deck(j)
- Deck(j) = Deck(k)
- Deck(k) = Temp
- Next
- Next
- End Sub
-
- ============================================================================
- THE ROUTINE DOCUMENTATION
- ============================================================================
- You must declare the following routines in a module to access these subs
- and functions:
-
- Declare Function CardVersion Lib "VBCards.dll" () As Integer
-
- Declare Sub GetCard Lib "VBCards.dll" (ByVal Card As Integer)
- Declare Sub GetCardBack Lib "VBCards.dll" (ByVal C As Integer)
- Declare Sub GetCardMisc Lib "VBCards.dll" (ByVal C As Integer)
-
- Declare Function SuitOf Lib "VBCards.dll" (ByVal C As Integer) As Integer
- Declare Function SameSuit Lib "VBCards.dll" (ByVal c1 As Integer, ByVal c2 As Integer) As Integer
- Declare Function IsCardRed Lib "VBCards.dll" (ByVal C As Integer) As Integer
- Declare Function IsCardBlack Lib "VBCards.dll" (ByVal C As Integer) As Integer
- Declare Function IsCardSameColor Lib "VBCards.dll" (ByVal C1 as Integer, ByVal C2 As Integer) As Integer
-
- Declare Function CardValue Lib "VBCards.dll" (ByVal C As Integer) As Integer
- Declare Function SameCardValue Lib "VBCards.dll" (ByVal c1 As Integer, ByVal c2 As Integer) As Integer
-
-
- You should declare in the GLOBALS section:
-
- Global Const NumCards = 52 'Or 53 if you want to include the Joker
- Global Const CardWidth = 71
- Global Const CardHeight= 96
-
- Global Const Spades = 1
- Global Const Hearts = 2
- Global Const Clubs = 3
- Global Const Diamonds = 4
-
-
- ============================================================================
- VERSION ROUTINE
- ============================================================================
- Function CardVersion () As Integer
-
- This returns the version number. Eg. Version 1.01 is returned as 101.
- This function should be called before any other routines are executed.
-
-
- ============================================================================
- BASIC CARD BITMAP ROUTINES
- ============================================================================
- Sub GetCard (ByVal Card As Integer)
-
- This routine will copy the card specified to the clipboard. You can then
- assign the clipboard contents (bitmap=2) to a control.Picture.
-
- Values 1..13 are Spades. 11=Jack, 12=Queen, 13=King. Values 14..26 are
- Hearts, 27..39 are Clubs, and, 40-52 are Diamonds. The Joker is 53.
-
- Example:
- GetCard(13)'King of Spades
- Picture1(i).Picture = ClipBoard.GetCard(2)' 2=Bitmap
-
-
- ----------------------------------------------------------------------------
- Sub GetCardBack (ByVal Card As Integer)
-
- This routine will copy the card back specified to the clipboard. You can
- then assign the clipboard contents (bitmap=2) to a control.Picture.
-
- As supplied, valid values are 1..7
-
- ----------------------------------------------------------------------------
- Sub GetCardMisc (ByVal Card As Integer)
-
- This routine will copy the misc. card specified to the clipboard. You can
- then assign the clipboard contents (bitmap=2) to a control.Picture.
-
- As supplied, valid values are 1 and 2. 1 returns a green card with a big
- red X on it, and 2 returns a green card with a large O on it.
-
-
- ============================================================================
- CARD SUIT COMPARISON ROUTINES
- ============================================================================
- Function SuitOf (ByVal C As Integer) As Integer
-
- This routine returns the suit of the card as an integer. It returns 0 if
- the card is not in the range of 1..52.
-
- Values of the suits are:
- 1 Spades
- 2 Hearts
- 3 Clubs
- 4 Diamonds
-
- ----------------------------------------------------------------------------
- Function SameSuit (ByVal c1 As Integer, ByVal c2 As Integer) As Integer
-
- This returns -1 (true) if cards C1 and C2 are the same suit. Returns zero
- if the card is not valid.
-
- ----------------------------------------------------------------------------
- Function IsCardRed (ByVal C As Integer) As Integer
-
- This returns -1 (true) if the card C is a Heart or Diamond. Returns zero
- if the card is not valid.
-
- ----------------------------------------------------------------------------
- Function IsCardBlack (ByVal C As Integer) As Integer
-
- This returns -1 (true) if the card C is a Spade or Club. Returns zero
- if the card is not valid.
-
- ----------------------------------------------------------------------------
- Function IsCardSameColor (ByVal C1 as Integer, ByVal C2 As Integer) As Integer
-
- This returns -1 (true) if the card C1 is a the same color as C2. Returns
- zero if the card is not valid.
-
-
- ============================================================================
- CARD VALUE COMPARISON ROUTINES
- ============================================================================
- Function CardValue (ByVal C As Integer) As Integer
-
- This returns the value of a card. All values are in the range of 1..13.
- For example, card 14 is the Ace of Hearts. Card 39 is the King of Clubs.
- Returns zero if the card is not valid.
-
- ----------------------------------------------------------------------------
- Function SameCardValue (ByVal c1 As Integer, ByVal c2 As Integer) As Integer
-
- This returns the -1 (true) if the value of C1 is the same as C2
- For example, card 13 has the same value as 26. Returns zero if the card
- is not valid.
-
-
- ============================================================================
- ADDING NEW BACK VALUES
- ============================================================================
- If you have the Whitewater Resource Toolkit (WRT.EXE) or Resource Workshop
- (RW.EXE) then you can edit the VBCards.dll to add new card backs. The
- Card Back Resources are valued at 60 through 89 of which I have provided
- 60 through 66 (7 card backs).
-
- The bitmaps for the images are 71 pixels wide and 96 pixels high.
-
- Optionally, the backs could be released as .BMP files so users can add the
- .BMP files themselves.
-