Older Version
Newer Version
Alyce
Jul 10, 2011
=QCard DLL Lesson 11=
<span style="text-align: right;
display: block;
color: 0;">[[QCard10|Lesson 10]] [[QCard12|Lesson 12]]</span>
----
[[user:Alyce]]
[[toc|flat]]
----
See [[QCard01|Lesson 1]] for QCard DLL and WAV files needed for the demo code.
=Drawing Symbol Cards=
QCard gives us three symbol cards. We draw them with DrawSymbol. We need the handle of our graphicbox, the index number of the symbol and the x and y location to draw the card. The index to draw an X is 1, the O is 2 and a place holder card is 3.
[[code format="lb"]]
calldll #qc, "DrawSymbol",_
hndle as ulong,_ 'handle of graphicbox
nV as long,_ '1=X 2=O 3=place holder
nx as long,_ 'x location
ny as long,_ 'y location
re as void 'no return
[[code]]
=Disabled Cards=
We can set a card's disabled value. We won't allow our users to interact with a disabled card. We do that with SetCardDisabled. We pass the index of the card and the disabled value. 1 is a disabled card and 0 means it is not disabled.
[[code format="lb"]]
calldll #qc, "SetCardDisabled",_
nC as long,_ 'card to set
nV as long,_ '1=disable,0=not disabled
re as void 'no return
[[code]]
We can later discover if a card is disabled by calling IsCardDisabled. We pass the index of the card to query and a return of 1 tells us the card is disabled. A return of 0 means it is not disabled.
[[code format="lb"]]
calldll #qc, "IsCardDisabled",_
nC as long,_ 'card to query
IsCardDisabled as long '1=disabled
[[code]]
=Card Backs=
We can also draw a card back image. This is not the same as displaying one of the 104 cards face-down.
[[code format="lb"]]
'nV can be 1,2,3,4,5,6 for 6 possible designs
'draws a cardback image on screen
calldll #qc, "DrawBack",_
hndle as ulong,_ 'handle of graphicbox
nV as long,_ 'index of card back, 1-6
x as long,_ 'x location
y as long,_ 'y location
r as void
[[code]]
=DEMO=
See [[QCard01|Lesson 1]] for QCard DLL and WAV files needed for the demo code.
The code for all of the QCard functions for this lesson is demonstrated in the program below.
[[image:cards11.gif]]
[[code format="lb"]]
'An open project card game, begun by Alyce Watson, May 27, 2003.
'Uses Qcard32.dll, a freeware library of playing card images.
'DLL by Stephen Murphy. Qcard32.DLL website:
'http://www.telusplanet.net/public/stevem/
nomainwin
WindowWidth=640:WindowHeight=480
UpperLeftX=1:UpperLeftY=1
menu #1, "&File", "E&xit", [quit]
graphicbox #1.g, 0, 0, 640, 440
open "Demo" for window_nf as #1
#1 "trapclose [quit]"
'get graphicbox handle
hBox=hwnd(#1.g)
'open the dll
open "qcard32.dll" for dll as #qc
'initialize the deck
Call InitializeDeck hBox
[new]
Call SetDefaultValues
'draw a nice background
#1.g "down; fill 10 190 225"
#1.g "backcolor 10 190 225"
call DrawBack hBox, 6, 10, 10 'draw card back design 6 at 10,10
call DrawSymbol hBox,1,100,10 'draw X at 100,10
call DrawSymbol hBox,2,190,10 'draw O at 190,10
call DrawSymbol hBox,3,280,10 'draw placeholder at 280,10
call DealCard hBox,33,10,200 'draw card at 10,200
call DealCard hBox,43,100,200 'draw card at 100,200
call SetCardDisabled 43,1 'set card 43 to disabled status
card1=IsCardDisabled(33)
card2=IsCardDisabled(43)
#1.g "place 20 400"
#1.g "\Card 1 disabled value is ";card1;" Card 2 disabled value is ";card2
wait
[quit] close #qc:close #1:end
''''''''''''''''''''
'subs and functions:
Sub InitializeDeck hndle
calldll #qc, "InitializeDeck",_
hndle as ulong,r as long
End Sub
Sub DealCard hndle,nC,x,y
'places card on window whose handle is hndle at x,y
'nC is number of card - 1-52 in first deck and
'53-104 in second deck, if used
calldll #qc, "DealCard",hndle as ulong,nC as long,_
x as long,y as long,r as void
End Sub
Sub DrawBack hndle, nV, x, y
'nV can be 1,2,3,4,5,6 for 6 possible designs
'draws a cardback image on screen
calldll #qc, "DrawBack",hndle as ulong,_
nV as long,x as long,y as long,r as void
End Sub
Sub DrawSymbol hndle,nV,nx,ny
calldll #qc, "DrawSymbol",_
hndle as ulong,_ 'handle of graphicbox
nV as long,_ '1=X 2=O 3=place holder
nx as long,_ 'x location
ny as long,_ 'y location
re as void 'no return
end sub
function IsCardDisabled(nC)
calldll #qc, "IsCardDisabled",_
nC as long,_ 'card to query
IsCardDisabled as long '1=disabled
end function
sub SetCardDisabled nC, nV
calldll #qc, "SetCardDisabled",_
nC as long,_ 'card to set
nV as long,_ '1=disable,0=not disabled
re as void 'no return
end sub
Sub SetDefaultValues
'reset all card properties back to their default values.
calldll #qc, "SetDefaultValues",r as void
End Sub
[[code]]
----
[[toc|flat]]
----
<span style="text-align: right;
display: block;
color: 0;">[[QCard10|Lesson 10]] [[QCard12|Lesson 12]]</span>