Category : BASIC Source Code
Archive   : CARD10.ZIP
Filename : VBCARDS.DOC

 
Output of file : VBCARDS.DOC contained in archive : CARD10.ZIP
============================================================================

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.


  3 Responses to “Category : BASIC Source Code
Archive   : CARD10.ZIP
Filename : VBCARDS.DOC

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/