www.pudn.com > goodchessGame.zip > Marriage.h
#ifndef __MARRIAGE_H__
#define __MARRIAGE_H__
//Marriage is a particular card game
//which involves three packets of cards
#include "GameController.h"
#include "JokerDialog.h"
#include "ScoreDialog.h"
#include "FiveInOneWaitDialog.h"
#include "MarriagePointsDialog.h"
class CMarriagePlayer;
class CMarriageGameSingleCompController;
#pragma pointers_to_members(full_generality, virtual_inheritance)
#pragma warning( disable : 4250 )
enum Status
{
NODRAWNORPICKED =0,
DRAWN,
PICKED
};
enum Tunnela_Type
{
JOKER_TUNNELA,
TIPLU_TUNNELA,
POPLU_TUNNELA,
JHIPLU_TUNNELA,
SIMPLE_TUNNELA
};
//If a player has three of the same card then he has a tunnela like 2 of spades, 2 of spades and 2 of spades
class CTunnela : public CObject
{
public:
CCard m_FirstCard; //here all the three cards are same
CCard m_SecondCard;
CCard m_ThirdCard;
public:
int m_TunnelaType;
void SetTunnela(int BmpIndex)
{
ASSERT(BmpIndex >= 1 && BmpIndex <= 52);
m_FirstCard.SetBitmapIndex(BmpIndex);
m_SecondCard.SetBitmapIndex(BmpIndex);
m_ThirdCard.SetBitmapIndex(BmpIndex);
}
int GetTunnelaBmpIndex()
{
return m_FirstCard.GetBitmapIndex();
}
BOOL CheckTunnela()
{
if(m_FirstCard.GetBitmapIndex() == m_SecondCard.GetBitmapIndex() &&
m_FirstCard.GetBitmapIndex() == m_ThirdCard.GetBitmapIndex())
{
return TRUE;
}
else
return FALSE;
}
public:
CTunnela()
{}
~CTunnela()
{}
};
enum {
TUNNELA,
PURESEQUENCE,
PROBABLESEQUENCE,
TRIPLET,
PROBABLETRIPLET,
DISCARD,
JOKER
};
//If a player has three cards in a sequence like 1 of spades, 2 of spades and 3 of spades then the player has a puresequence
class CPureSequence : public CObject
{
public:
CCard m_FirstCard;
CCard m_SecondCard;
CCard m_ThirdCard;
public:
void SetFirstCard(int BmpIndex)
{
m_FirstCard.SetBitmapIndex(BmpIndex);
}
void SetSecondCard(int BmpIndex)
{
m_SecondCard.SetBitmapIndex(BmpIndex);
}
void SetThirdCard(int BmpIndex)
{
m_ThirdCard.SetBitmapIndex(BmpIndex);
}
int GetFirstCard()
{
return m_FirstCard.GetBitmapIndex();
}
int GetSecondCard()
{
return m_SecondCard.GetBitmapIndex();
}
int GetThirdCard()
{
return m_ThirdCard.GetBitmapIndex();
}
int m_PureSequenceType;
public:
CPureSequence()
{}
~CPureSequence()
{}
BOOL CheckPureSequence()
{
int CardArray[3];
CardArray[0] = m_FirstCard.GetBitmapIndex();
CardArray[1] = m_SecondCard.GetBitmapIndex();
CardArray[2] = m_ThirdCard.GetBitmapIndex();
int temp;
BOOL flag;
do
{
flag = FALSE;
for (int i = 0; i <= 1; i++)
{
if(CardArray[i] < CardArray[i+1])
{
temp = CardArray[i];
CardArray[i] = CardArray[i+1];
CardArray[i+1] = temp;
flag = TRUE;
}
}
} while (flag);
if((CardArray[0] - CardArray[1]) == 1 &&
((CardArray[0] - CardArray[2]) == 2 || (CardArray[0] - CardArray[2]) == 12) && (int((m_FirstCard.GetBitmapIndex()-1)/13)+1) == (int((m_SecondCard.GetBitmapIndex()-1)/13)+1) &&
(int((m_FirstCard.GetBitmapIndex()-1)/13)+1) == (int((m_ThirdCard.GetBitmapIndex()-1)/13)+1))
{
return TRUE;
}
else
return FALSE;
}
void operator=(CPureSequence&);
};
//A probable sequence is two cards in series like 1 of spades and 2 of spades
class CProbableSequence : public CObject
{
public:
CCard m_FirstCard;
CCard m_SecondCard;
public:
CProbableSequence()
{}
~CProbableSequence()
{}
};
//If three cards are same but their suites differ like 1 of spades, 1 of clubs and 1 of hearts
class CTriplet : public CObject
{
public:
CCard m_FirstCard;
CCard m_SecondCard;
CCard m_ThirdCard;
public:
CTriplet()
{}
~CTriplet()
{}
void SetFirstCard(int BmpIndex)
{
m_FirstCard.SetBitmapIndex(BmpIndex);
}
void SetSecondCard(int BmpIndex)
{
m_SecondCard.SetBitmapIndex(BmpIndex);
}
void SetThirdCard(int BmpIndex)
{
m_ThirdCard.SetBitmapIndex(BmpIndex);
}
int GetFirstCard()
{
return m_FirstCard.GetBitmapIndex();
}
int GetSecondCard()
{
return m_SecondCard.GetBitmapIndex();
}
int GetThirdCard()
{
return m_ThirdCard.GetBitmapIndex();
}
BOOL CheckTriplet()
{
if(m_FirstCard.GetBitmapIndex() != m_SecondCard.GetBitmapIndex()
&& m_FirstCard.GetBitmapIndex() != m_ThirdCard.GetBitmapIndex()
&& m_SecondCard.GetBitmapIndex() != m_ThirdCard.GetBitmapIndex()
&& ((m_FirstCard.GetBitmapIndex()-1) % 13)+1 == ((m_SecondCard.GetBitmapIndex()-1) % 13)+1
&& ((m_FirstCard.GetBitmapIndex()-1) % 13)+1 == ((m_ThirdCard.GetBitmapIndex()-1) % 13)+1)
{
return TRUE;
}
else
return FALSE;
}
};
//two similar cards with different suites
class CProbableTriplet : public CObject
{
public:
CCard m_FirstCard;
CCard m_SecondCard;
public:
CProbableTriplet()
{}
~CProbableTriplet()
{}
};
//The card that is kept aside for throwing
class CDiscard : public CObject
{
public:
CCard m_Card;
public:
CDiscard()
{}
~CDiscard()
{}
void SetDiscard(int BmpIndex)
{
m_Card.SetBitmapIndex(BmpIndex);
}
int GetDiscard()
{
return m_Card.GetBitmapIndex();
}
};
enum {
ORDINARY_JOKER,
TIPLU_JOKER,
POPLU_JOKER,
JHIPLU_JOKER
};
class CJoker : public CObject
{
private:
CCard m_Card;
public:
int m_nJokerType;
public:
CJoker()
{}
~CJoker()
{}
void SetJoker(int BmpIndex)
{
m_Card.SetBitmapIndex(BmpIndex);
}
int GetJoker()
{
return m_Card.GetBitmapIndex();
}
int CheckJoker(int val)
{
if(((m_Card.GetBitmapIndex()-1) % 13)+1 == ((val-1) % 13)+1
|| m_Card.GetBitmapIndex() == val
|| ((m_Card.GetBitmapIndex()+1 == val) && (int((m_Card.GetBitmapIndex()-1)/13)+1 == int((val-1)/13)+1))
|| ((m_Card.GetBitmapIndex()-1 == val) && (int((m_Card.GetBitmapIndex()-1)/13)+1 == int((val-1)/13)+1))
|| ((m_Card.GetBitmapIndex()-12 == val) && (int((m_Card.GetBitmapIndex()-1)/13)+1 == int((val-1)/13)+1))
|| ((m_Card.GetBitmapIndex()+12 == val) && (int((m_Card.GetBitmapIndex()-1)/13)+1 == int((val-1)/13)+1)))
{
return 1;
}
else
return 0;
}
};
class CDirtySequence : public CObject
{
public:
CCard m_FirstCard;
CCard m_SecondCard;
CCard m_ThirdCard;
public:
CDirtySequence()
{}
~CDirtySequence()
{}
void SetFirstCard(int BmpIndex)
{
m_FirstCard.SetBitmapIndex(BmpIndex);
}
void SetSecondCard(int BmpIndex)
{
m_SecondCard.SetBitmapIndex(BmpIndex);
}
void SetThirdCard(int BmpIndex)
{
m_ThirdCard.SetBitmapIndex(BmpIndex);
}
int GetFirstCard()
{
return m_FirstCard.GetBitmapIndex();
}
int GetSecondCard()
{
return m_SecondCard.GetBitmapIndex();
}
int GetThirdCard()
{
return m_ThirdCard.GetBitmapIndex();
}
BOOL CheckDirtySequence(CJoker* pJoker)
{
BOOL flag;
int index;
int counter=0;
int temp;
int CardArray[3];
CardArray[0] = m_FirstCard.GetBitmapIndex();
CardArray[1] = m_SecondCard.GetBitmapIndex();
CardArray[2] = m_ThirdCard.GetBitmapIndex();
do
{
flag = FALSE;
for (int i = 0; i <= 1; i++)
{
if(CardArray[i] < CardArray[i+1])
{
temp = CardArray[i];
CardArray[i] = CardArray[i+1];
CardArray[i+1] = temp;
flag = TRUE;
}
}
} while (flag);
for (int i = 0; i <= 2; i++)
{
if(pJoker->CheckJoker(CardArray[i]) == 1)
{
counter++;
index = i;
}
}
if(counter == 2)
return TRUE;
else if(counter == 3)
return TRUE;
else if(counter == 1)
{
switch(index)
{
case 0:
{
if((CardArray[1] - 1 == CardArray[2] || CardArray[1] - 2 == CardArray[2] || CardArray[1] - 11 == CardArray[2] || CardArray[1] - 12 == CardArray[2] ) && int((CardArray[1]-1)/13)+1 == int((CardArray[2]-1)/13)+1)
return TRUE;
else
return FALSE;
}
break;
case 1:
{
if((CardArray[0] - 1 == CardArray[2] || CardArray[0] - 2 == CardArray[2] || CardArray[0] - 11 == CardArray[2] || CardArray[0] - 12 == CardArray[2]) && int((CardArray[0]-1)/13)+1 == int((CardArray[2]-1)/13)+1)
return TRUE;
else
return FALSE;
}
break;
case 2:
{
if((CardArray[0] - 1 == CardArray[1] || CardArray[0] - 2 == CardArray[1] || CardArray[0] - 11 == CardArray[1] || CardArray[0] - 12 == CardArray[1] ) && int((CardArray[0]-1)/13)+1 == int((CardArray[1]-1)/13)+1)
return TRUE;
else
return FALSE;
}
break;
}
}
else
return FALSE;
return FALSE;
}
};
class CDirtyTriplet : public CObject
{
public:
CCard m_FirstCard;
CCard m_SecondCard;
CCard m_ThirdCard;
public:
CDirtyTriplet()
{}
~CDirtyTriplet()
{}
void SetFirstCard(int BmpIndex)
{
m_FirstCard.SetBitmapIndex(BmpIndex);
}
void SetSecondCard(int BmpIndex)
{
m_SecondCard.SetBitmapIndex(BmpIndex);
}
void SetThirdCard(int BmpIndex)
{
m_ThirdCard.SetBitmapIndex(BmpIndex);
}
int GetFirstCard()
{
return m_FirstCard.GetBitmapIndex();
}
int GetSecondCard()
{
return m_SecondCard.GetBitmapIndex();
}
int GetThirdCard()
{
return m_ThirdCard.GetBitmapIndex();
}
BOOL CheckDirtyTriplet(CJoker* pJoker)
{
int index;
int counter=0;
int CardArray[3];
CardArray[0] = m_FirstCard.GetBitmapIndex();
CardArray[1] = m_SecondCard.GetBitmapIndex();
CardArray[2] = m_ThirdCard.GetBitmapIndex();
for (int i = 0; i <= 2; i++)
{
if(pJoker->CheckJoker(CardArray[i]) == 1)
{
counter++;
index = i;
}
}
if(counter == 2)
return TRUE;
else if(counter == 3)
return TRUE;
else if(counter == 1)
{
switch(index)
{
case 0:
{
if(CardArray[1] != CardArray[2] && ((CardArray[1]-1) % 13)+1 == ((CardArray[2]-1) % 13)+1)
return TRUE;
else
return FALSE;
}
break;
case 1:
{
if(CardArray[0] != CardArray[2] && ((CardArray[0]-1) % 13)+1 == ((CardArray[2]-1) % 13)+1)
return TRUE;
else
return FALSE;
}
break;
case 2:
{
if(CardArray[0] != CardArray[1] && ((CardArray[0]-1) % 13)+1 == ((CardArray[1]-1) % 13)+1)
return TRUE;
else
return FALSE;
}
break;
}
}
else
return FALSE;
return FALSE;
}
};
class CFirstThreePureSequence : public CObject
{
public:
CPureSequence *m_PureSequenceOne;
CPureSequence *m_PureSequenceTwo;
CPureSequence *m_PureSequenceThree;
public:
CFirstThreePureSequence();
~CFirstThreePureSequence();
public:
int m_OverlappingDistance;
public:
void Creation(CWnd *pParentWnd, int NumberOfPlayer, CMarriagePlayer *pPlayer);
};
// This class represents a player who is playing a marriage game
// The members and member function are arbitary; they are not fixed
// they maybe modified as the project progresses
class CMarriagePlayer: virtual public CPlayer
{
protected:
CPureSequence *m_pPureSequence;
CTriplet *m_pTriplet;
CTunnela *m_pTunnela;
CArray m_ShowingCardArray;
public:
CMarriagePlayer();
virtual ~CMarriagePlayer();
CTypedPtrList m_PureSequenceStaticList;
CTypedPtrList m_PureSequenceDynamicList;
CTypedPtrList m_TripletList;
CTypedPtrList m_JokerList;
CTypedPtrList m_TunnelaAtHandList;
int m_nTiplu;
int m_nPoplu;
int m_nJhiplu;
int m_nMarriage;
int m_nPoints;
virtual void CalTunnelaAtHand(CJoker* Joker);
virtual void CalTiplu(CJoker* Joker);
virtual void CalPoplu(CJoker* Joker);
virtual void CalJhiplu(CJoker* Joker);
virtual void CalMarriage(CJoker* Joker);
CFirstThreePureSequence m_FirstThreePureSequence;
BOOL m_bJokerSeen;
BOOL m_bIMadeTheGame;
int m_nPureSequenceCounter;
void CleanUp();
};
// This class represents a human player playing a game of Marriage. The player can be a client or a host
// The members and member function are arbitary; they are not fixed
// they maybe modified as the project progresses
class CHumanMarriagePlayer :virtual public CMarriagePlayer, virtual public CHumanPlayer
{
public:
CTypedPtrList m_DirtySequenceList;
CTypedPtrList m_DirtyTripletList;
CDirtySequence *m_pDirtySequence;
CDirtyTriplet *m_pDirtyTriplet;
public:
CHumanMarriagePlayer();
~CHumanMarriagePlayer();
virtual void CalTunnelaAtHand(CJoker* Joker);
virtual void CalTiplu(CJoker* Joker);
virtual void CalPoplu(CJoker* Joker);
virtual void CalJhiplu(CJoker* Joker);
virtual void CalMarriage(CJoker* Joker);
void ShowCards(CWnd * pParentWnd, int nNumOfPlayers);
void CleanUp();
};
// This class represents the human marriage player who is also the host
// The members and member function are arbitary; they are not fixed
// they maybe modified as the project progresses
class CHostHumanMarriagePlayer : public CHumanMarriagePlayer
{
public:
CHostHumanMarriagePlayer();
virtual ~CHostHumanMarriagePlayer();
};
// This class represents a human marriage player who is also a client
// The members and member function are arbitary; they are not fixed
// they maybe modified as the project progresses
class CClientHumanMarriagePlayer : public CHumanMarriagePlayer
{
public:
CClientHumanMarriagePlayer();
virtual ~CClientHumanMarriagePlayer();
};
// The player is the computer and the current game is marriage
// The members and member function are arbitary; they are not fixed;
// they maybe modified as the project progresses
class CComputerMarriagePlayer: public CMarriagePlayer, public CComputerPlayer
{
protected:
CProbableTriplet *m_pProbableTriplet;
CProbableSequence *m_pProbableSequence;
CDiscard *m_pDiscard;
CJoker *m_pJoker;
CJoker *m_pJokerFromController;
CDaoDatabase* m_pDatabase;
CDaoTableDef* m_pTableDef1;
CDaoTableDef* m_pTableDef2;
CString m_strTempBaseTableName;
int m_nCounter;
CString m_strSelectJokerOrdinary, m_strSelectJokerTiplu, m_strSelectJokerPoplu, m_strSelectJokerJhiplu;
CString m_strSelectTunnela, m_strSelectPureSequence, m_strSelectTriplet, m_strSelect;
CString m_strDelete;
CString m_strSelectOrdJok, m_strSelectTipJok, m_strSelectPopJok, m_strSelectZhipJok;
CString m_strSelectTun, m_strSelectPur, m_strSelectPro, m_strSelectTrip, m_strSelectProTrip, m_strSelectDiscard;
CDaoRecordset m_RecordsetJokerOrdinary;
CDaoRecordset m_RecordsetJokerTiplu;
CDaoRecordset m_RecordsetJokerPoplu;
CDaoRecordset m_RecordsetJokerJhiplu;
CDaoRecordset m_RecordsetTunnela;
CDaoRecordset m_RecordsetPureSequence;
CDaoRecordset m_RecordsetTriplet;
CDaoRecordset m_Recordset;
public:
CComputerMarriagePlayer(CDaoDatabase *pDatabase, int PlayerID);
virtual ~CComputerMarriagePlayer();
CTypedPtrList m_ProbableSequenceList;
CTypedPtrList m_ProbableTripletList;
CTypedPtrList m_DiscardList;
BOOL CreateBaseTable();
BOOL CreateTempBaseTable();
void PopulateBaseTable();
void PopulateTempBaseTable();
void PopulateLists(int nType, int nSubType);
Status DrawOrPick(CDeck&, CFloor&, CWnd* pParentWnd);
BOOL Throw(CFloor&, CFloorDialog&);
BOOL MilyoKiMilenaTest();
virtual void CalTunnelaAtHand(CJoker* Joker);
virtual void CalTiplu(CJoker* Joker);
virtual void CalPoplu(CJoker* Joker);
virtual void CalJhiplu(CJoker* Joker);
virtual void CalMarriage(CJoker* Joker);
void ShowCards(CWnd * pParentWnd, int nNumOfPlayers);
void SetJoker(CJoker *pJoker);
void CleanUp();
};
// This class represents a player who is playing a marriage game not in
// the network environment.
// The members and member function are arbitary; they are not fixed
// they maybe modified as the project progresses
class CMarriageGameSingleCompController : public CSingleCompGameController
{
protected:
CString m_strDatabaseName;
BOOL m_bJokerSeen;
CJokerDialog m_JokerDlg;
CScoreDialog m_ScoreDlg;
CMarriagePointsDialog m_PointsDlg;
int m_nCounter;
CPureSequence *m_pPureSequence;
CTunnela *m_pTunnela;
CTriplet *m_pTriplet;
CDirtySequence *m_pDirtySequence;
CDirtyTriplet *m_pDirtyTriplet;
BOOL m_bAlreadyShown;
BOOL m_bAlreadyDrawn;
BOOL m_bAlreadyPicked;
BOOL m_bAlreadyThrown;
int m_nCommandID;
int m_nHitDetectCounter;
int m_nCardDrawnCounter;
CCard *m_ptmpCard;
protected:
virtual void OnDraw(CDC* pDC); // overridden to draw this view
afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
virtual void CreationOfPlayers();
void Deal();
void CalcPos();
BOOL CheckTunnela();
BOOL CheckPureSequence();
BOOL CheckTriplet();
BOOL CheckDirtySequence();
BOOL CheckDirtyTriplet();
int CheckJoker(int Val);
void OnScores();
void ShowAllCards();
void CalculatePoints();
void OnPlay();
protected:
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
afx_msg void DrawCard();
afx_msg void UpdateDrawCard(CCmdUI *pCmdUI);
afx_msg void PickCard();
afx_msg void UpdatePickCard(CCmdUI *pCmdUI);
afx_msg void ThrowCard();
afx_msg void UpdateThrowCard(CCmdUI *pCmdUI);
afx_msg void Joker();
afx_msg void UpdateJoker(CCmdUI *pCmdUI);
afx_msg void RegisterTunnela();
afx_msg void UpdateRegisterTunnela(CCmdUI *pCmdUI);
afx_msg void RegisterPureSequence();
afx_msg void UpdateRegisterPureSequence(CCmdUI *pCmdUI);
afx_msg void RegisterTriplet();
afx_msg void UpdateRegisterTriplet(CCmdUI *pCmdUI);
afx_msg void RegisterDirtySequence();
afx_msg void UpdateRegisterDirtySequence(CCmdUI *pCmdUI);
afx_msg void RegisterDirtyTriplet();
afx_msg void UpdateRegisterDirtyTriplet(CCmdUI *pCmdUI);
afx_msg void Edit();
afx_msg void UpdateEdit(CCmdUI *pCmdUI);
afx_msg void ShowFirstThreePureSequence();
afx_msg void UpdateShowFirstThreePureSequence(CCmdUI *pCmdUI);
afx_msg void Arrange();
afx_msg void UpdateArrange(CCmdUI *pCmdUI);
public:
CMarriageGameSingleCompController();
virtual ~CMarriageGameSingleCompController();
virtual void CleanUp();
DECLARE_DYNCREATE(CMarriageGameSingleCompController)
public:
CDaoDatabase *m_pDatabase;
CJoker m_Joker;
CTypedPtrList m_HumanMarriagePlayerList;
CTypedPtrList m_ComputerMarriagePlayerList;
CComputerMarriagePlayer *m_pComputerMarriagePlayer;
CHumanMarriagePlayer *m_pHumanMarriagePlayer;
public:
virtual void Begin();
DECLARE_MESSAGE_MAP()
afx_msg void OnFileDeal();
afx_msg void OnUpdateFileDeal(CCmdUI *pCmdUI);
afx_msg void OnTimer(UINT nIDEvent);
afx_msg void OnClose();
afx_msg void OnDestroy();
afx_msg void OnOptionsPointssystem();
afx_msg void OnUpdateOptionsPointssystem(CCmdUI *pCmdUI);
virtual void OnInitialUpdate();
};
class CMarriageGameNetworkController : public CNetworkGameController
{
protected:
int m_nPlayerIDCounter;
int m_nCounter;
int m_nHitDetectCounter;
int m_nCommandID;
CJoker m_Joker;
CMarriagePointsDialog m_PointsDlg;
BOOL m_bJokerSeen;
BOOL m_bDone;
CJokerDialog m_JokerDlg;
CScoreDialog m_ScoreDlg;
CPureSequence *m_pPureSequence;
CTunnela *m_pTunnela;
CTriplet *m_pTriplet;
CDirtySequence *m_pDirtySequence;
CDirtyTriplet *m_pDirtyTriplet;
CHostHumanMarriagePlayer *m_pHostHumanMarriagePlayer;
CClientHumanMarriagePlayer *m_pClientHumanMarriagePlayer;
CHumanMarriagePlayer *m_pHumanMarriagePlayer;
BOOL m_bAlreadyShown;
BOOL m_bAlreadyDrawn;
BOOL m_bAlreadyPicked;
BOOL m_bAlreadyThrown;
int m_nCardDrawnCounter;
CCard *m_ptmpCard;
CCard m_temp;
POSITION m_pos;
int m_TrackCounter;
CPureSequence *pPureSequence;
CTunnela *pTunnela;
CTriplet *pTriplet;
CDirtySequence *pDirtySequence;
CDirtyTriplet *pDirtyTriplet;
public:
CMarriageGameNetworkController();
protected:
virtual ~CMarriageGameNetworkController();
virtual void CleanUp();
DECLARE_DYNCREATE(CMarriageGameNetworkController)
public:
CTypedPtrList m_HostHumanMarriagePlayerList;
CTypedPtrList m_ClientHumanMarriagePlayerList;
CTypedPtrList m_HumanMarriagePlayerList;
protected:
virtual void CreationOfPlayers();
void DealHost();
void CalcPos();
void Reset();
BOOL CheckTunnela();
BOOL CheckPureSequence();
BOOL CheckTriplet();
BOOL CheckDirtySequence();
BOOL CheckDirtyTriplet();
int CheckJoker(int Val);
void OnScores();
void CalculatePoints();
void TransferPointsSystemData();
void ShowAllCards();
public:
virtual void OnDraw(CDC* pDC); // overridden to draw this view
protected:
afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
afx_msg void DrawCard();
afx_msg void UpdateDrawCard(CCmdUI *pCmdUI);
afx_msg void PickCard();
afx_msg void UpdatePickCard(CCmdUI *pCmdUI);
afx_msg void ThrowCard();
afx_msg void UpdateThrowCard(CCmdUI *pCmdUI);
afx_msg void Joker();
afx_msg void UpdateJoker(CCmdUI *pCmdUI);
afx_msg void RegisterTunnela();
afx_msg void UpdateRegisterTunnela(CCmdUI *pCmdUI);
afx_msg void RegisterPureSequence();
afx_msg void UpdateRegisterPureSequence(CCmdUI *pCmdUI);
afx_msg void RegisterTriplet();
afx_msg void UpdateRegisterTriplet(CCmdUI *pCmdUI);
afx_msg void RegisterDirtySequence();
afx_msg void UpdateRegisterDirtySequence(CCmdUI *pCmdUI);
afx_msg void RegisterDirtyTriplet();
afx_msg void UpdateRegisterDirtyTriplet(CCmdUI *pCmdUI);
afx_msg void Edit();
afx_msg void UpdateEdit(CCmdUI *pCmdUI);
afx_msg void ShowFirstThreePureSequence();
afx_msg void UpdateShowFirstThreePureSequence(CCmdUI *pCmdUI);
afx_msg void Arrange();
afx_msg void UpdateArrange(CCmdUI *pCmdUI);
public:
virtual void Begin();
virtual void ProcessMessage(DataPacket &dp);
DECLARE_MESSAGE_MAP()
afx_msg void OnFileDeal();
afx_msg void OnUpdateFileDeal(CCmdUI *pCmdUI);
afx_msg void OnTimer(UINT nIDEvent);
afx_msg void OnOptionsPointssystem();
afx_msg void OnUpdateOptionsPointssystem(CCmdUI *pCmdUI);
virtual void OnInitialUpdate();
};
#endif //__MARRIAGE_H__