|
Tutoriaux
- Utiliser la DLL "cards.dll" |
|
La
DLL "cards.dll" contient des
images de carte à jouer qui sont utilisées dans
de nombreux jeux sur Windows comme par exemple le "Solitaire"
ou la "Dame de Pique".
Vous pouvez utiliser cette DLL dans vos propres sources pour
afficher des cartes à jouer. L'avantage d'utiliser cette
DLL dans vos sources est le gain de place de votre application
puisque cette DLL se trouve déjà dans Windows.
|
En faites, il
existe deux versions de cette DLL. Une version 16 bits (Window 95,
98) et une version 32 bits (Windows NT, 2000 et XP).
Nous utiliserons la version 32 bits.
La DLL "cards.dll" exporte cinq fonctions.
Fonction |
Description |
cdtAnimate |
Anime le
dos des cartes. Elle fonctionne uniquement avec des cartes de
taille normal dessinés avec la fonction "cdtDraw".
Cela marche suivant le dos des cartes (paramètre "Card"
à 56, 63, 64 et 65) et la version de Windows. Il faut
incrémenter le paramètre "Etat" partant
de "0" puis le remettre à "0" lorsque
la fonction retourne "0". |
cdtDraw |
Dessine
une carte à jouer (cette fonction est détaillée
en peu plus bas). |
cdtDrawExt |
Identique
à la fonction "cdtDraw". La seule différence
est que cette fonction possède deux paramètres
suplémentaires qui vous permetteront d'indiquer la taille
(largeur et hauteur) des cartes. |
cdtInit |
Initialise
la DLL. Les deux paramètres permettent de récupèrer
la largeur et la hauteur des cartes à jouer. |
cdtTerm |
Libère
les ressources allouées. |
Importer
les fonctions de la DLL |
Pour commencer, il faut
importer les fonctions de la DLL que l'on va utiliser.
Si vous n'utilisez
pas les fonctions "cdtDrawExt" ou "cdtAnimate",
il n'est pas nécessaire de les importer.
function
cdtAnimate(DC:HDC;Card,X,Y,Etat:Integer):Integer; StdCall;
external 'CARDS.DLL';
function cdtDraw(DC:HDC; X,Y,Card,Typ:Integer;
Color:TColor):Integer; StdCall; external
'CARDS.DLL';
function cdtDrawExt(DC:HDC; X,Y,CardWidth,CardHeight,Card,Typ:Integer;
Color:TColor):integer; StdCall; external
'CARDS.DLL';
function cdtInit(var
Width,Height:Integer):Integer; StdCall;
external 'CARDS.DLL';
function cdtTerm:Integer; StdCall;
external 'CARDS.DLL'; |
|
Vous devez respecter
les majuscules et les minuscules pour les noms des fonctions que vous
importez.
Il n'est nécessaire de spécifier le chemin complet de
la DLL "cards.dll" puisqu'elle se trouve dans le répertoire
"System" de Windows (ou "System32" pour Windows
NT, 2000 et XP).
function
cdtDraw(DC:HDC; X,Y,Card,Typ:Integer; Color:TColor):Integer; |
|
Paramètre |
Description |
DC |
Handle du contexte
de périphérique dans lequel le tracé de
la carte à jouer sera effectuée. |
X,Y |
Position de la carte
à jouer en pixel. |
Card |
Numéro
(appelé égalemnt ID) de la carte à jouer. |
Typ |
Type de
la carte. Les valeurs possibles sont "0", "1"
et "2" (permet d'inverser les couleurs). |
Color |
Couleur
de fond de la carte. Par défaut, cette couleur est blanche. |
Ce tableau récapitule
les valeurs possibles du paramètre "Card" de la fonction
"cdtDraw".
|
|
|
|
|
As |
0 |
1 |
2 |
3 |
2 |
4 |
5 |
6 |
7 |
3 |
8 |
9 |
10 |
11 |
4 |
12 |
13 |
14 |
15 |
5 |
16 |
17 |
18 |
19 |
6 |
20 |
21 |
22 |
23 |
7 |
24 |
25 |
26 |
27 |
8 |
28 |
29 |
30 |
31 |
9 |
32 |
33 |
34 |
35 |
10 |
36 |
37 |
38 |
39 |
Valet
(J) |
40 |
41 |
42 |
43 |
Dame
(Q) |
44 |
45 |
46 |
47 |
Roi
(K) |
48 |
49 |
50 |
51 |
Si le paramètre
"Typ" vaut "1", le paramètre "Card"
de la fonction "cdtDraw" possèdent également
quinze autres valeures qui sont : "53", "54",
"55", "56", "57", "58", "59",
"60", "61", "62", "63", "64",
"65", "67" et "68".
On peut remarquer
que la valeur "66" n'existe pas.
Les images qui sont affichées au dos de la carte à jouer
peuvent être différentes en fonction des versions de
Windows et donc de la DLL.
Astuce : Lorsque le paramètre
"Typ" de la fonction "cdtDraw" vaut "1",
vous pouvez alors changer la couleur de fond des 52 cartes à
jouer (ainsi que pour le dos de la carte "53") grâce
au paramètre"Color".
Afficher
une carte à jouer |
Ajoutez un composant
TButton à votre programme.
Ensuite, lors de la création de la form, on initialise la DLL
grâce à la fonction "cdtInit". Les variables
"Wdth" et "Hght" permettent de récupèrer
la taille d'une carte à jouer. De même, lorsque que l'on
détruira la form, on libèrera les ressources allouées
par la DLL grâce à la fonction "cdtTerm".
private
{ Déclarations privées
}
Wdth:integer;
Hght:integer;
public
{ Déclarations publiques
}
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
cdtInit(Wdth,Hght); //Initialise
la DLL
end;
procedure TForm1.FormDestroy(Sender:
TObject);
begin
cdtTerm; //Libère les ressources
allouées
end;
|
|
On va maintenant
afficher l'as de coeur gâce à la fonction "cdtDraw".
procedure
TForm1.Button1Click(Sender: TObject);
begin
cdtDraw(Form1.Canvas.Handle,105,48,2,0,clWhite); //Affiche
l'as de coeur
end; |
|
"105"
et "48" correspond la position (X,Y) de la carte à
jouer dans la fiche.
Ici, "clWhite"
n'intervient pas car le paramètre "Typ" vaut "0".
Afficher une carte
à jouer |
[ 21-10-2003 ] |
Affiche
une carte à jouer grâce à la DLL
"cards.dll".
Télécharger : [5
Ko] [
cards.zip]
Auteur
: Yoann
Site internet : http://delphipage.free.fr/
|
|
Afficher
un jeu de 52 cartes à jouer |
Pour cela, on a besoin d'une
variable de type entier.
On réalise une boucle pour obtenir les 52 cartes à jouer.
On change également la position en X et Y de la carte en fonction
de la variable.
procedure
TForm1.Button1Click(Sender: TObject);
var i:Integer;
begin
for i:=0 to 51 do
cdtDraw(Form1.Canvas.Handle,i*10,i*10,i,0,clWhite); //Affiche
le jeu de 52 cartes à jouer
end; |
|
Afficher un jeu de
52 cartes à jouer |
[ 21-10-2003 ] |
Affiche
un jeu de 52 cartes à jouer grâce à
la DLL "cards.dll".
Télécharger : [5
Ko] [
cards2.zip]
Auteur
: Yoann
Site internet : http://delphipage.free.fr/
|
|
Afficher
le dos d'une carte à jouer |
procedure
TForm1.Button1Click(Sender: TObject);
begin
cdtDraw(Form1.Canvas.Handle,105,48,54,1,clWhite); //Affiche
le dos "54"
end; |
|
A noté que
la couleur influe seulement en mettant le paramètre "Card"
de la fonction "cdtDraw" à "53".
Afficher le dos d'une
carte à jouer |
[ 21-10-2003 ] |
Affiche
le dos d'une carte à jouer grâce à
la DLL "cards.dll".
Télécharger : [5
Ko] [
cards3.zip]
Auteur
: Yoann
Site internet : http://delphipage.free.fr/
|
|
|