| 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$ |
| 8 | // Copyright: (c) 1993-1998 Chris Breeze |
| 9 | // Licence: wxWindows licence |
| 10 | //--------------------------------------------------------------------------- |
| 11 | // Last modified: 22nd July 1998 - ported to wxWindows 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); |
| 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; } |
| 54 | WayUp GetWayUp() const { return m_wayUp; } |
| 55 | int GetPipValue() const { return m_pipValue; } |
| 56 | Suit GetSuit() const { return m_suit; } |
| 57 | SuitColour GetColour() const { return m_colour; } |
| 58 | static void SetScale(double scale); |
| 59 | static int GetHeight() { return m_height; }; |
| 60 | static int GetWidth() { return m_width; }; |
| 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_ |