Delphipage - la reference en Delphi
Accueil - Astuces - Composants - Programmes - Tutoriaux - Livres - Liens
 Sources
- Astuces
- Composants
- Programmes
- Tutoriaux
 Rechercher
- Delphipage
- Ngscan
 Ressources
- Lexique Delphi
- Livres
- News
- Patchs Delphi
 Liens
- Borland France
- CodeGear
- Les meilleurs sites


Tutoriaux - Utiliser la DLL "cards.dll"

Présentation

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).


La fonction "cdtDraw"

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] [Télécharger 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] [Télécharger 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] [Télécharger cards3.zip]

Auteur : Yoann
Site internet : http://delphipage.free.fr/

Tous droits réservés - Contacts
Haut de la page