home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / gamtlk11.zip / source.zip / BJCPP / BLACKJACK.HPP < prev    next >
C/C++ Source or Header  |  1999-06-11  |  3KB  |  162 lines

  1. //
  2. // File: Blackjack.HPP
  3. //
  4. // Main class declarations for Blackjack for the Compulsive Gambler's Toolkit
  5. //
  6. #include <iframe.hpp>
  7. #include <icmdhdr.hpp>
  8. #include <imenubar.hpp>
  9. #include <iprofile.hpp>
  10. #include <ipoint.hpp>
  11. #include <ipushbut.hpp>
  12. #include <isizehdr.hpp>
  13. #include <istack.h>
  14. #include <ispinnum.hpp>
  15. #include <idrawcv.hpp>
  16. #include <ireslib.hpp>
  17.  
  18. #define  MAX_HANDS   4
  19. #define  MAX_CARDS   10
  20. #define  DECKNAME    "Standard"
  21.  
  22. class BJACK;
  23.  
  24. class ACommandHandler : public ICommandHandler
  25. {
  26.   public:
  27.  
  28.     ACommandHandler(BJACK *helloFrame);
  29.     virtual ~ACommandHandler() { };
  30.  
  31.   protected:
  32.  
  33.     virtual bool command(ICommandEvent& cmdEvent);
  34.     virtual bool systemCommand(ICommandEvent& cmdEvent);
  35.  
  36.   private:
  37.     BJACK *frame;
  38. };
  39.  
  40. class AResizeHandler : public IResizeHandler
  41. {
  42.    friend class BJACK;
  43.    public:
  44.       AResizeHandler(BJACK *BJFrame);
  45.       virtual  ~AResizeHandler() {};
  46.  
  47.    protected:
  48.  
  49.       virtual bool windowResize(IResizeEvent& resizeEvent);
  50.  
  51.    private:
  52.       BJACK    *frame;
  53. };
  54.  
  55. class BJProfile: public IProfile
  56. {
  57.    friend class BJACK;
  58.   public:
  59.  
  60.       BJProfile(const char *FileName);
  61.       virtual ~BJProfile();
  62.  
  63.   protected:
  64.  
  65.      IPoint    Position;
  66.      ISize     Size, DesktopSize;
  67.      char      fileName[256];
  68.      char      NumDecks, SoftHit, HardHit;
  69.      unsigned short Wager, RuleFlags;
  70. };
  71.  
  72. class CARD
  73. {
  74.    public:
  75.  
  76.       CARD(char Value);
  77.       virtual  ~CARD();
  78.       char  faceOf();
  79.       char  suitOf();
  80.    private:
  81.       char  Value;
  82. };
  83.  
  84. typedef IStack <CARD> ShoeClass;
  85.  
  86. class SHOE : public ShoeClass
  87. {
  88.    public:
  89.          SHOE(BJACK *BJFrame);
  90.          ~SHOE() {};
  91.          bool shuffle(int NumDecks);
  92.          bool pastMarker();
  93.          CARD drawCard();
  94.    private:
  95.          unsigned short Marker, TotalSize;
  96.          BJACK    *frame;
  97. };
  98.  
  99. class BJHAND
  100. {
  101.    public:
  102.       BJHAND();
  103.       virtual ~BJHAND();
  104.       bool startHand(int Bet);
  105.       virtual bool addCard(CARD NewCard);
  106.  
  107.    protected:
  108.       float    Bet;
  109.       CARD     Card[MAX_CARDS];
  110.       int      NumCards;
  111.       char     Value;
  112. };
  113.  
  114. class BJPlayer
  115. {
  116.    public:
  117.       BJPlayer();
  118.       virtual  ~BJPlayer();
  119.       void     addMoney(float Money);
  120.       float    cashOut();
  121.       bool     newHand(int Bet);
  122.       virtual bool addCard(CARD NewCard);
  123.  
  124.    protected:
  125.       float    Bank;
  126.       int      Wager;
  127.       BJHAND   Hand[MAX_HANDS];
  128.       int      NumHands, HandNum;
  129. };
  130.  
  131. class DECK : public IDynamicLinkLibrary
  132. {
  133.    public:
  134.       DECK(const char *Name=DECKNAME);
  135.       virtual ~DECK();
  136. };
  137.  
  138. class BJACK : public IFrameWindow
  139. {
  140.    public:
  141.  
  142.       BJACK(const unsigned long windowId);
  143.       virtual ~BJACK();
  144.       getPosition();
  145.       bool sizeClient(IResizeEvent& resizeEvent);
  146.       bool deal();
  147.  
  148.    protected:
  149.  
  150.       IMenuBar          menuBar;
  151.       IPushButton       dealButton, hitButton, standButton, splitButton, doubleButton;
  152.       INumericSpinButton   wagerEntry;
  153.       IDrawingCanvas       drawCanvas;
  154.       ACommandHandler   commandHandler;
  155.       AResizeHandler    resizeHandler;
  156.       BJProfile         profile;
  157.       BJPlayer          player;
  158.       BJHAND            dealer;
  159.       SHOE              shoe;
  160.       DECK              deck;
  161. };
  162.