begin process at 2010 03 17 08:07:47
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Jeux

 > CLASSE POUR UTILISER CARDS.DLL FACILEMENT

CLASSE POUR UTILISER CARDS.DLL FACILEMENT


 Information sur la source

Note :
Aucune note
Catégorie :Jeux Classé sous :cardsdll, cartes, cards Niveau :Débutant Date de création :15/06/2006 Date de mise à jour :16/06/2006 21:58:28 Vu / téléchargé :4 547 / 176

Auteur : gbourgeois0019

Ecrire un message privé
Commentaire sur cette source (13)
Ajouter un commentaire et/ou une note

 Description

Il s'agit d'une classe très simple qui permet une utilisation simplifiée et facile de la librairie Cards.dll.

Source

  • // MyCards.h
  • /*****************************************
  • MyCards : Classe permettant d'utiliser facilement la librairie Cards.dll
  • Guillaume Bourgeois ( 14/06/06 )
  • *****************************************/
  • #include "windows.h"
  • #define CLUBS 0
  • #define DIAMONDS 1
  • #define HEARTS 2
  • #define SPADES 3
  • #define ACE 0
  • #define TWO 1
  • #define THREE 2
  • #define FOUR 3
  • #define FIVE 4
  • #define SIX 5
  • #define SEVEN 6
  • #define EIGHT 7
  • #define NINE 8
  • #define TEN 9
  • #define JACK 10
  • #define QUEEN 11
  • #define KING 12
  • #define CS_CROSSHATCH 53
  • #define CS_WEAVE1 54
  • #define CS_WEAVE2 55
  • #define CS_ROBOT 56
  • #define CS_FLOWERS 57
  • #define CS_VINE1 58
  • #define CS_VINE2 59
  • #define CS_FISH1 60
  • #define CS_FISH2 61
  • #define CS_SHELLS 62
  • #define CS_CASTLE 63
  • #define CS_ISLAND 64
  • #define CS_CARDHAND 65
  • #define CS_UNUSED 66
  • #define CS_THE_X 67
  • #define CS_THE_O 68
  • #define MAKE_CARD_VALUE(Face, Suit) (Face * 4 + Suit)
  • // Faces : 0 = Ace, 1 = Two , ... 10 = Jack, 11 = Queen, 12 = King.
  • // Suit : 0 = Clubs, 1 = Diamond, 2 = Heart, 3 = Spades
  • typedef BOOL (WINAPI *pfcdtInit)(int *, int *);
  • typedef BOOL (WINAPI *pfcdtDraw)(HDC, int x, int y, int card, int type, DWORD color);
  • typedef BOOL (WINAPI *pfcdtDrawEx)(HDC, int x, int y, int dx, int dy, int card, int type, DWORD color);
  • typedef BOOL (WINAPI *pfcdtAnimate)(HDC hdc, int cardback, int x, int y, int state);
  • typedef void (WINAPI *pfcdtTerm) (void);
  • class MyCards
  • {
  • public:
  • MyCards(); //Constructeur
  • ~MyCards(); //Destructeur
  • private:
  • bool InitCardsDll(void);
  • HMODULE hCardDll;
  • pfcdtInit cdtInit;
  • pfcdtDraw cdtDraw;
  • pfcdtDrawEx cdtDrawEx;
  • pfcdtAnimate cdtAnimate;
  • pfcdtTerm cdtTerm;
  • public:
  • bool SetDefaultCardSize(int Height, int Width);
  • bool DrawCard(HDC hDC, int x, int y, int CardValue, int Type, DWORD Color=0x00FFFFFF);
  • bool DrawCard(HDC hDC, POINT Position, int CardValue, int Type, DWORD Color=0x00FFFFFF);
  • bool DrawCard(HDC hDC, int x, int y, int Height, int Width, int CardValue, int Type, DWORD Color=0x00FFFFFF);
  • bool DrawCard(HDC hDC, POINT Position, int Height, int Width, int CardValue, int Type, DWORD Color=0x00FFFFFF);
  • bool DrawCard(HDC hDC, RECT Position, int CardValue, int Type, DWORD Color=0x00FFFFFF);
  • // To make a card value use MAKE_CARD_VALUE(Face,Suit)
  • // Type = 0 -> Front Face
  • // Type = 1 -> Back face
  • // Type = 3 -> Front Face ( Inverted colors )
  • };
  • /*************************************************************
  • **************************************************************
  • **************************************************************
  • **************************************************************
  • **************************************************************/
  • #include "MyCards.h"
  • MyCards::MyCards()
  • {
  • if ( !InitCardsDll() )
  • ::MessageBox(0,"Unable to load Cards.dll","Error",MB_ICONERROR);
  • SetDefaultCardSize(30,20);
  • }
  • MyCards::~MyCards()
  • {
  • cdtTerm();
  • ::FreeLibrary(hCardDll);
  • }
  • bool MyCards::InitCardsDll(void)
  • {
  • hCardDll = ::LoadLibrary("cards.dll");
  • if(hCardDll == 0)
  • return 0;
  • cdtInit = (pfcdtInit) GetProcAddress(hCardDll, "cdtInit");
  • cdtDraw = (pfcdtDraw) GetProcAddress(hCardDll, "cdtDraw");
  • cdtDrawEx = (pfcdtDrawEx) GetProcAddress(hCardDll, "cdtDrawExt");
  • cdtAnimate = (pfcdtAnimate) GetProcAddress(hCardDll, "cdtAnimate");
  • cdtTerm = (pfcdtTerm) GetProcAddress(hCardDll, "cdtTerm");
  • return 1;
  • }
  • bool MyCards::SetDefaultCardSize(int Height, int Width)
  • {
  • return cdtInit(&Height,&Width);
  • }
  • bool MyCards::DrawCard(HDC hDC, int x, int y, int CardValue, int Type, DWORD Color)
  • {
  • return cdtDraw(hDC,x,y,CardValue,Type,Color);
  • }
  • bool MyCards::DrawCard(HDC hDC, POINT Position, int CardValue, int Type, DWORD Color)
  • {
  • return cdtDraw(hDC,Position.x,Position.y,CardValue,Type,Color);
  • }
  • bool MyCards::DrawCard(HDC hDC, int x, int y, int Height, int Width, int CardValue, int Type, DWORD Color)
  • {
  • return cdtDrawEx(hDC,x,y,Height,Width,CardValue,Type,Color);
  • }
  • bool MyCards::DrawCard(HDC hDC, POINT Position, int Height, int Width, int CardValue, int Type, DWORD Color)
  • {
  • return cdtDrawEx(hDC,Position.x,Position.y,Height,Width,CardValue,Type,Color);
  • }
  • bool MyCards::DrawCard(HDC hDC, RECT Position, int CardValue, int Type, DWORD Color)
  • {
  • return cdtDrawEx(hDC,Position.left,Position.top,
  • (Position.right-Position.left),(Position.bottom-Position.top),CardValue,Type,Color);
  • }
// MyCards.h

/*****************************************

MyCards : Classe permettant d'utiliser facilement la librairie Cards.dll

Guillaume Bourgeois ( 14/06/06 )

*****************************************/

#include "windows.h"

#define CLUBS    0
#define DIAMONDS 1
#define HEARTS   2
#define SPADES   3

#define ACE 0
#define TWO 1
#define THREE 2
#define FOUR 3
#define FIVE 4
#define SIX 5
#define SEVEN 6
#define EIGHT 7
#define NINE 8
#define TEN 9
#define JACK 10
#define QUEEN 11
#define KING 12

#define CS_CROSSHATCH  53
#define CS_WEAVE1      54
#define CS_WEAVE2      55
#define CS_ROBOT       56
#define CS_FLOWERS     57
#define CS_VINE1       58
#define CS_VINE2       59
#define CS_FISH1       60
#define CS_FISH2       61
#define CS_SHELLS      62
#define CS_CASTLE      63
#define CS_ISLAND      64
#define CS_CARDHAND    65
#define CS_UNUSED      66
#define CS_THE_X       67
#define CS_THE_O       68

#define MAKE_CARD_VALUE(Face, Suit) (Face * 4 + Suit)
// Faces : 0 = Ace, 1 = Two , ... 10 = Jack, 11 = Queen, 12 = King.
// Suit : 0 = Clubs, 1 = Diamond, 2 = Heart, 3 = Spades

typedef BOOL (WINAPI *pfcdtInit)(int *, int *);
typedef BOOL (WINAPI *pfcdtDraw)(HDC, int x, int y, int card, int type, DWORD color);
typedef BOOL (WINAPI *pfcdtDrawEx)(HDC, int x, int y, int dx, int dy, int card, int type, DWORD color);
typedef BOOL (WINAPI *pfcdtAnimate)(HDC hdc, int cardback, int x, int y, int state);
typedef void (WINAPI *pfcdtTerm) (void);

class MyCards
{
public:
	MyCards(); //Constructeur
	~MyCards(); //Destructeur

private:

	bool InitCardsDll(void);

	HMODULE hCardDll;

	pfcdtInit cdtInit;
	pfcdtDraw cdtDraw;
	pfcdtDrawEx cdtDrawEx;
	pfcdtAnimate cdtAnimate;
	pfcdtTerm cdtTerm;

public:
	bool SetDefaultCardSize(int Height, int Width);
	
	bool DrawCard(HDC hDC, int x, int y, int CardValue, int Type, DWORD Color=0x00FFFFFF);
	bool DrawCard(HDC hDC, POINT Position, int CardValue, int Type, DWORD Color=0x00FFFFFF);
	bool DrawCard(HDC hDC, int x, int y, int Height, int Width, int CardValue, int Type, DWORD Color=0x00FFFFFF);
	bool DrawCard(HDC hDC, POINT Position, int Height, int Width, int CardValue, int Type, DWORD Color=0x00FFFFFF);
	bool DrawCard(HDC hDC, RECT Position, int CardValue, int Type, DWORD Color=0x00FFFFFF);
	// To make a card value use MAKE_CARD_VALUE(Face,Suit)
	// Type = 0 -> Front Face
	// Type = 1 -> Back face
	// Type = 3 -> Front Face ( Inverted colors )

};


/*************************************************************
**************************************************************
**************************************************************
**************************************************************
**************************************************************/

#include "MyCards.h"

MyCards::MyCards()
{
	if ( !InitCardsDll() )
		::MessageBox(0,"Unable to load Cards.dll","Error",MB_ICONERROR);
	SetDefaultCardSize(30,20);
}
MyCards::~MyCards()
{
	cdtTerm();
	::FreeLibrary(hCardDll);
}
bool MyCards::InitCardsDll(void)
{
	hCardDll = ::LoadLibrary("cards.dll");

    if(hCardDll == 0)
        return 0;

	cdtInit    = (pfcdtInit)    GetProcAddress(hCardDll, "cdtInit");
	cdtDraw    = (pfcdtDraw)    GetProcAddress(hCardDll, "cdtDraw");
	cdtDrawEx  = (pfcdtDrawEx)  GetProcAddress(hCardDll, "cdtDrawExt");
	cdtAnimate = (pfcdtAnimate) GetProcAddress(hCardDll, "cdtAnimate");
	cdtTerm    = (pfcdtTerm)    GetProcAddress(hCardDll, "cdtTerm");
    
    return 1;
}
bool MyCards::SetDefaultCardSize(int Height, int Width)
{
	return cdtInit(&Height,&Width);
}
bool MyCards::DrawCard(HDC hDC, int x, int y, int CardValue, int Type, DWORD Color)
{
	return cdtDraw(hDC,x,y,CardValue,Type,Color);
}
bool MyCards::DrawCard(HDC hDC, POINT Position, int CardValue, int Type, DWORD Color)
{
	return cdtDraw(hDC,Position.x,Position.y,CardValue,Type,Color);
}
bool MyCards::DrawCard(HDC hDC, int x, int y, int Height, int Width, int CardValue, int Type, DWORD Color)
{
	return cdtDrawEx(hDC,x,y,Height,Width,CardValue,Type,Color);
}
bool MyCards::DrawCard(HDC hDC, POINT Position, int Height, int Width, int CardValue, int Type, DWORD Color)
{
	return cdtDrawEx(hDC,Position.x,Position.y,Height,Width,CardValue,Type,Color);
}
bool MyCards::DrawCard(HDC hDC, RECT Position, int CardValue, int Type, DWORD Color)
{
	return cdtDrawEx(hDC,Position.left,Position.top,
		(Position.right-Position.left),(Position.bottom-Position.top),CardValue,Type,Color);
}


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

16 juin 2006 16:43:42 :
- Ajouté le HDC en argument aux fonctions. - Enlevé un pointeur inutile :P
16 juin 2006 21:58:29 :
Enlevé la fonction GetDC() qui n'était même plus définie :P, puis ajouter une surcharge a DrawCard().

 Sources du même auteur

Source avec Zip Source avec une capture PLAYIT (LECTEUR MP3)[WIN32][FMOD]
Source avec Zip Source avec une capture POWERMETER [ WIN32 ] ( ETAT DE LA BATTERIE DE VOTRE PORTABLE...
Source avec Zip Source avec une capture MOUSE-O-METER
Source avec Zip Source avec une capture MYIRC ( CLIENT IRC )

 Sources de la même categorie

Source avec Zip PUISSANCE 4 EN SDL, AVEC SAUVEGARDE , JOUEUR VS JOUEUR OU IA... par diablosephiroth
Source avec Zip Source avec une capture TETRIS 1.0 (C & SDL) par c1702
Source avec Zip Source avec une capture LE PENDU (PAR CRAZYGOODBOY) par CrazyGoodBoy
Source avec Zip Source avec une capture PLUS OU MOINS par antho974
Source avec Zip Source avec une capture TETRIS EN C++ AVEC SDL par Marmalus

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture VIDEOPOKER EN SDL par jlf6
Source avec Zip Source avec une capture BLACKJACK AVEC ALLEGRO par julus_julus
Source avec Zip BLACKJAK AVEC ALLEGRO !!! par AmK

Commentaires et avis

Commentaire de Galmiza le 16/06/2006 15:11:50

# bool MyCards::SetDefaultCardSize(int Height, int Width)
# {
#     int *i;
#     int *j;
#     BOOL ret;
#  
#     i = new int;
#     j = new int;
#  
#     (*i)=Height;
#     (*j)=Width;
#  
#     ret = cdtInit(i,j);
#     if ( !ret )
#         return 0;
#  
#     return 1;
# }

Ca ne revient pas au même de faire ça ?

# bool MyCards::SetDefaultCardSize(int Height, int Width)
# {
#     return cdtInit(&Height,&Width);
# }

Je n'ai pas encore essayé mais ça a l'air sympathique.
Ca facilite grandement le bouleau de ceux qui veulent faire des jeux de cartes quelconques.

Commentaire de vecchio56 le 16/06/2006 15:15:41 administrateur CS

Pourquoi retourner 0 ou 1 dans une fonction bool, et pas true/false.
Ca change pas grand chose, mais dans ce cas autant mettre le fonction en int

Je suis pas sûr que garder un m_hDC soit une bonne solution. Je l'aurais plutot demandé en argument. Du coupr, m_hWnd n'est plus utile non plus

# if ( !ret )
#         return 0;
#  
#     return 1;
Tu peux remplacer ca par return ret; c'est plus joli

Et dans SetDefaultCardSize, j'ai pas compris pourquoi tu utiliser des pointeurs et des new
N'est-ce pas équivalent a ca?
bool MyCards::SetDefaultCardSize(int Height, int Width)
{
  return cdtInit(Height, Width);
}

Commentaire de vecchio56 le 16/06/2006 15:16:30 administrateur CS

Ah je me suis fait grillé, ca m'apprendra a écrire de longs messages!

Commentaire de gbourgeois0019 le 16/06/2006 16:40:38

Merci pour vos commentaires et j'ai apporté les midifications nécessaires :)

J'ai suivi ton conseil vecchio56 et j'ai mis le HDC en argument comme je l'avais fait au tout debut.

Commentaire de vecchio56 le 16/06/2006 19:55:55 administrateur CS

Il te reste encore une méthode getDC() qui traine...
Je vois que tu essaie de fournir pas mal de méthodes DrawCard
Je pense que tu pourrais en donner une qui prend en paramètre un RECT (qui contiendra donc la position et la taille)

Commentaire de gbourgeois0019 le 16/06/2006 21:41:44

Ah ok merci ! J'arrange ca et j'update dans pas long ! ;)

Commentaire de Renfield le 23/06/2006 11:33:07 administrateur CS

y'a une mauvaise compréhension de
return cdtInit(&Height,&Width);

cdtInit renvoie la taille des cartes que la dll sais dessiner....
elle ne permet aucunement de la personnaliser...

Commentaire de vecchio56 le 23/06/2006 11:40:41 administrateur CS

Le retour de cdtInit est pour test d'erreur a mon avis. Mais cette fonction sert bien a initialiser la librairie (grace au deux paramètres Height et Width)
Je vois pas trop non plus pourquoi on passe leur adresse plutot que leur valeur (a moins que les valeurs puissent être modifiées par cdtInit, si par exemple toutes les tailles ne sont pas possibles)

Commentaire de Renfield le 23/06/2006 12:13:42 administrateur CS

à Initialiser la librairie, oui, je ne discute pas ce point.

la fonction en profite juste pour fournir les dimensions des cartes...
le code :
SetDefaultCardSize(30,20);

est donc faux...

Commentaire de vecchio56 le 23/06/2006 12:46:07 administrateur CS

En fait cdtInit récupère la taille des cartes, qu'on ne peut donc pas choisir (apparemment 71x96)

Commentaire de vecchio56 le 23/06/2006 12:48:05 administrateur CS

(c'est la fonction cdtDrawExt qui permet de choisir la taille des cartes à dessiner)

Commentaire de Renfield le 23/06/2006 14:11:08 administrateur CS

on est donc finallement tombés d'accord ^^

Commentaire de gbourgeois0019 le 23/06/2006 15:31:42

effectivement c'est moi qui a fait une erreur en lisant l'aide des fonction sur le net. L'aide dit ceci :

Initializes the cards.dll library for your application. You must supply the addresses of two variables, in which cards.dll stores the width and height (in pixels) of a card.

On ne peut donc decider de la taille de la carte qu'avec la fonction cdtDrawEx.

Je vais corriger ca dans pas long ...

Merci ;)

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

lecteur de carte [ par cyril ] Avec un lecteur de carte typeCKL2000 modèle ECR8 peux-on changer le programme pour lire des cartes bancaire ou des cartes de code.Merci pour une répon Cartes à jouer [ par oxy ] Est-ce que qqun connaît une librairie premettant d'utiliser des cartes à jouer?Merci d'avance pour vos réponses! Récupérer une adresse IP. ( à partir de 2 cartes réseaux. ) [ par pcayrol ] Ma config : un PC avec deux cartes réseaux. Chaque carte a son adresse IP.Avec la fonction gethostbyname je recupere un pointeur HOSTENT qui pointe su Appler une structure dans une fonction ... [ par eldered ] Salut !!Alors mon pb est le suivant :J'ai cré une fonction qui me permet un certain nombre de chose en autre trouver si un element appartient a un tab Probleme de probalitié de pioche [ par Kirbyboss ] Bonjour a tous.J'aimerais faire un programme permettant de connaitre le nombre de chance de piocher un certain nombre de carte precise dans un paquet Jeu de Mémoire [ par lacousine ] Bonjour,je suis sur la conception d'un jeu de mémoire, qui consiste à trouver 2 cartes pareilles. Mon programme affiche 16 cartes, dont 8 trouvées au Affichage, graphisme fenetre en C/C++ [ par sdrthomas ] Bonjour bonjour,Voilà je suis en école d'ingé et ai reçu des cours de C++ puis C. Le problème c'est que tout ça est resté très terre à terre. Je pense creation d'un uno en C/C++....grand besoin d'aide...merci d'avance [ par celine11 ] Au secours!!!Je souhaite créer un uno en langage C mais à chaque creation de nouvelles fonctions, rien ne marche, je commence à saturer. Voici la desc programme de classification avec les cartes de Kohonen (SOM) en C++ [ par malikach ] Salut,je cherche le code du programme de classification avec les cartes de Kohonen en C++, est ce que vous pouvez m'aider?merci infiniment Faire des cartes pour jeu [ par gimli123 ] Salut tout le monde BONNE ANNEE !!!!Bon alors heu voila ma question ^_^Par quel procédé on fait pour faire des petites cartes pour des niveaux dans un


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,983 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales