1 /////////////////////////////////////////////////////////////////////////////
2 // Name:        card.h
3 // Purpose:     Forty Thieves patience game
4 // Author:      Chris Breeze
5 // Modified by:
6 // Created:     21/07/97
7 // RCS-ID:      $Id: card.h 29660 2004-10-05 15:38:40Z ABX $
8 // Copyright:   (c) 1993-1998 Chris Breeze
9 // Licence:     wxWindows licence
10 //---------------------------------------------------------------------------
11 // Last modified: 22nd July 1998 - ported to wxWidgets 2.0
12 /////////////////////////////////////////////////////////////////////////////
13 //+-------------------------------------------------------------+
14 //| Description:                                                |
15 //| A class for drawing playing cards.                          |
16 //| InitCards() must be called before using the Card class,     |
17 //| otherwise the card bitmaps will not be loaded.              |
18 //| CloseCards() must be called before terminating the          |
19 //| program so that the bitmaps are deleted and the memory      |
20 //| given back to Windows.                                      |
21 //+-------------------------------------------------------------+
22 #ifndef _CARD_H_
23 #define _CARD_H_
24 
25 // Constants
26 const int PackSize = 52;
27 
28 #define CardHeight Card::GetHeight()
29 #define CardWidth  Card::GetWidth()
30 
31 // Data types
32 enum Suit { clubs = 0, diamonds = 1, hearts = 2, spades = 3 };
33 enum SuitColour { red = 0, black = 1 };
34 enum WayUp { faceup, facedown };
35 
36 //--------------------------------//
37 // A class defining a single card //
38 //--------------------------------//
39 class Card {
40     friend class FortyApp;
41 
42     static double m_scale;
43     static int m_width,m_height;
44 
45 public:
46     Card(int value, WayUp way_up = facedown);
~Card()47     virtual ~Card(){};
48 
49     void Draw(wxDC& pDC, int x, int y);
50     static void DrawNullCard(wxDC& pDC, int x, int y); // Draw card place-holder
51     void Erase(wxDC& pDC, int x, int y);
52 
53     void TurnCard(WayUp way_up = faceup) { m_wayUp = way_up; }
GetWayUp()54     WayUp GetWayUp() const { return m_wayUp; }
GetPipValue()55     int GetPipValue() const { return m_pipValue; }
GetSuit()56     Suit GetSuit() const { return m_suit; }
GetColour()57     SuitColour GetColour() const { return m_colour; }
58     static void SetScale(double scale);
GetHeight()59     static int GetHeight() { return m_height; };
GetWidth()60     static int GetWidth() { return m_width; };
GetScale()61     static double GetScale() { return m_scale; };
62 
63 private:
64     Suit m_suit;
65     int m_pipValue; // in the range 1 (Ace) to 13 (King)
66     SuitColour m_colour; // red or black
67     bool m_status;
68     WayUp m_wayUp;
69 
70     static wxBitmap* m_symbolBmap;
71     static wxBitmap* m_pictureBmap;
72 };
73 
74 #endif // _CARD_H_
75