| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 | 
							- /////////////////////////////////////////////////////////////////////////////
 
- // Name:        game.h
 
- // Purpose:     Forty Thieves patience game
 
- // Author:      Chris Breeze
 
- // Modified by:
 
- // Created:     21/07/97
 
- // Copyright:   (c) 1993-1998 Chris Breeze
 
- // Licence:     wxWindows licence
 
- //---------------------------------------------------------------------------
 
- // Last modified: 22nd July 1998 - ported to wxWidgets 2.0
 
- /////////////////////////////////////////////////////////////////////////////
 
- #ifndef _GAME_H_
 
- #define _GAME_H_
 
- #include "card.h"
 
- #include "pile.h"
 
- const int MaxMoves = 800;
 
- //---------------------------------------//
 
- // A class which holds the pack of cards //
 
- //---------------------------------------//
 
- class Pack : public Pile {
 
- public:
 
-     Pack(int x, int y);
 
-     virtual ~Pack();
 
-     void Redraw(wxDC& dc);
 
-     void ResetPile() { m_topCard = NumCards - 1; }
 
-     void Shuffle();
 
-     void AddCard(Card* card); // Add card
 
-     void AddCard(wxDC& dc, Card* card) { AddCard(card); Redraw(dc); }
 
- };
 
- //----------------------------------------------------------//
 
- // A class which holds a base i.e. the initial 10 x 4 cards //
 
- //----------------------------------------------------------//
 
- class Base : public Pile {
 
- public:
 
-     Base(int x, int y);
 
-     virtual ~Base(){}
 
-     bool AcceptCard(Card* card);
 
- };
 
- //----------------------------------------------------//
 
- // A class which holds a foundation i.e. Ace, 2, 3... //
 
- //----------------------------------------------------//
 
- class Foundation : public Pile {
 
- public:
 
-     Foundation(int x, int y);
 
-     virtual ~Foundation(){}
 
-     bool AcceptCard(Card* card);
 
- };
 
- //--------------------------------------//
 
- // A class which holds the discard pile //
 
- //--------------------------------------//
 
- class Discard : public Pile {
 
- public:
 
-     Discard(int x, int y);
 
-     virtual ~Discard(){}
 
-     void Redraw(wxDC& dc);
 
-     void GetTopCardPos(int& x, int& y);
 
-     Card* RemoveTopCard(wxDC& dc, int m_xOffset, int m_yOffset);
 
- };
 
- class Game {
 
- public:
 
-     Game(int wins, int games, int score);
 
-     virtual ~Game();
 
-     void Layout();
 
-     void NewPlayer(int wins, int games, int score);
 
-     void Deal(); // Shuffle and deal a new game
 
-     bool CanYouGo(int x, int y); // can card under (x,y) go somewhere?
 
-     bool HaveYouWon(); // have you won the game?
 
-     void Undo(wxDC& dc); // Undo the last go
 
-     void Redo(wxDC& dc); // Redo the last go
 
-     void Redraw(wxDC& dc);
 
-     void DisplayScore(wxDC& dc);
 
-     bool LButtonDown(wxDC& dc, int mx, int my);
 
-     void LButtonUp(wxDC& dc, int mx, int my);
 
-     void LButtonDblClk(wxDC& dc, int mx, int my);
 
-     void MouseMove(wxDC& dc, int mx, int my);
 
-     int GetNumWins() const { return m_numWins; }
 
-     int GetNumGames() const { return m_numGames; }
 
-     int GetScore() const { return m_currentScore + m_totalScore; }
 
-     bool InPlay() const { return m_inPlay; }
 
- private:
 
-     bool DropCard(int x, int y, Pile* pile, Card* card);
 
-             //  can the card at (x, y) be dropped on the pile?
 
-     Pile* WhichPile(int x, int y); // which pile is (x, y) over?
 
-     void DoMove(wxDC& dc, Pile* src, Pile* dest);
 
-     bool m_inPlay; // flag indicating that the game has started
 
-     // undo buffer
 
-     struct {
 
-         Pile* src;
 
-         Pile* dest;
 
-     } m_moves[MaxMoves];
 
-     int m_moveIndex; // current position in undo/redo buffer
 
-     int m_redoIndex; // max move index available for redo
 
-     // the various piles of cards
 
-     Pack* m_pack;
 
-     Discard* m_discard;
 
-     Base* m_bases[10];
 
-     Foundation* m_foundations[8];
 
-     // variables to do with dragging cards
 
-     Pile* m_srcPile;
 
-     Card* m_liftedCard;
 
-     int m_xPos, m_yPos; // current coords of card being dragged
 
-     int m_xOffset, m_yOffset; // card/mouse offset when dragging a card
 
-     wxBitmap* m_bmap;
 
-     wxBitmap* m_bmapCard;
 
-     // variables to do with scoring
 
-     int m_numGames;
 
-     int m_numWins;
 
-     int m_totalScore;
 
-     int m_currentScore;
 
- };
 
- #endif // _GAME_H_
 
 
  |