www.pudn.com > goodchessGame.zip > Player.cpp
#include "StdAfx.h"
#include "Player.h"
#include "FiveInOne.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
CPlayer::CPlayer()
{
m_PlayerID = 0;
m_BoundingRect.SetRectEmpty();
m_OverlappingDistance = 0;
m_strPlayerName = _T("");
}
CPlayer::~CPlayer()
{
}
void CPlayer::CleanUp()
{
int x = m_CardArray.GetUpperBound();
for(int i = 0; i <= x; i++)
{
CCard* pCard =(CCard*)m_CardArray.GetAt(i);
pCard->DestroyWindow();
delete pCard;
MSG msg;
while (::PeekMessage( &msg, NULL, 0, 0, PM_NOREMOVE|PM_QS_PAINT))
{
if (!AfxGetApp()->PumpMessage())
{
::PostQuitMessage(0);
break;
}
}
}
m_CardArray.RemoveAll();
m_OverlappingDistance = 0;
}
void CPlayer::FindAndDelete(int BmpIndex)
{
int CardMax = m_CardArray.GetUpperBound();
for (int i = 0; i <= CardMax; i++)
{
if(m_CardArray[i]->GetBitmapIndex() == BmpIndex)
{
CWnd *pParent = m_CardArray[i]->GetParent();
m_CardArray[i]->DestroyWindow();
pParent->UpdateWindow();
delete m_CardArray[i];
m_CardArray.RemoveAt(i);
CardMax--;
return;
}
}
}
void CPlayer::FindAndDelete(CCard &Card)
{
int CardMax = m_CardArray.GetUpperBound();
for (int i = 0; i <= CardMax; i++)
{
if(m_CardArray[i]->GetBitmapIndex() == Card.GetBitmapIndex() && m_CardArray[i]->GetStartingPoint().x == Card.GetStartingPoint().x &&
m_CardArray[i]->GetStartingPoint().y == Card.GetStartingPoint().y)
{
CWnd *pParent = m_CardArray[i]->GetParent();
m_CardArray[i]->DestroyWindow();
pParent->UpdateWindow();
delete m_CardArray[i];
m_CardArray.RemoveAt(i);
CardMax--;
return;
}
}
}
void CPlayer::FindAndSetSelectionFalse(CView *pView, CCard & Card)
{
int CardMax = m_CardArray.GetUpperBound();
for (int i = 0; i <= CardMax; i++)
{
if(m_CardArray[i]->GetBitmapIndex() == Card.GetBitmapIndex() && m_CardArray[i]->GetStartingPoint().x == Card.GetStartingPoint().x &&
m_CardArray[i]->GetStartingPoint().y == Card.GetStartingPoint().y)
{
m_CardArray[i]->SetSelectionFalse(pView);
return;
}
}
}
int CPlayer::FindCardIndex(int nBitmapIndex)
{
int CardMax = m_CardArray.GetUpperBound();
for (int i = 0; i <= CardMax; i++)
{
if(m_CardArray[i]->GetBitmapIndex() == nBitmapIndex)
return i;
}
return -1;
}
CRect CPlayer::GetBoundingRect()
{
return m_BoundingRect;
}
int CPlayer::GetPlayerID()
{
return m_PlayerID;
}
void CPlayer::RepositioningOneAtTime(CWnd *pParentWnd, int &X, int &Y, BOOL XConstant, BOOL FrontView)
{
CCard *pCard;
int MaxCards = m_CardArray.GetUpperBound();
if(MaxCards == -1)
return;
CPoint Point(X, Y);
m_CardArray[MaxCards]->SetStartingPoint(Point);
BOOL flag = m_CardArray[MaxCards]->IsViewChanged(FrontView);
if(flag)
{
pCard = new CCard;
pCard->SetStartingPoint(Point);
pCard->SetBitmapIndex(m_CardArray[MaxCards]->GetBitmapIndex());
m_CardArray[MaxCards]->DestroyWindow();
delete m_CardArray[MaxCards];
m_CardArray.RemoveAt(MaxCards);
pCard->Creation(pParentWnd, pCard->GetBitmapIndex(), FrontView);
m_CardArray.InsertAt(MaxCards, pCard);
}
m_CardArray[MaxCards]->MoveWindow(X, Y, 71, 96);
if(XConstant)
Y += 20;
else
X += 20;
}
void CPlayer::RepositioningEntire(CWnd *pParentWnd, int X, int Y, BOOL XConstant, BOOL FrontView, BOOL bVisible)
{
CCard *pCard;
int MaxCards = m_CardArray.GetUpperBound();
//FrontView = TRUE;
if(MaxCards == -1)
return;
for (int i = 0; i <= MaxCards; i++)
{
CPoint Point(X, Y);
m_CardArray[i]->SetStartingPoint(Point);
m_CardArray[i]->Invalidate(FALSE);
BOOL flag = m_CardArray[i]->IsViewChanged(FrontView);
if(flag)
{
pCard = new CCard;
pCard->SetStartingPoint(Point);
pCard->SetBitmapIndex(m_CardArray[i]->GetBitmapIndex());
m_CardArray[i]->DestroyWindow();
delete m_CardArray[i];
m_CardArray.RemoveAt(i);
pCard->Creation(pParentWnd, pCard->GetBitmapIndex(), FrontView, bVisible);
m_CardArray.InsertAt(i, pCard);
}
if(bVisible)
{
if(!m_CardArray[i]->IsWindowVisible())
m_CardArray[i]->ShowWindow(SW_SHOW);
}
else
{
if(!m_CardArray[i]->IsWindowVisible())
m_CardArray[i]->ShowWindow(SW_HIDE);
}
if(i==0)
m_CardArray[i]->MoveWindow(X, Y, 71, 96);
else
m_CardArray[i]->SetWindowPos(m_CardArray[i-1], X, Y, 71, 96, SWP_NOSIZE);
if(XConstant)
Y += 20;
else
X += 20;
m_CardArray[i]->GetParent()->UpdateWindow();
}
CRect Rect1, Rect2;
m_CardArray[0]->GetClientRect(&Rect1);
m_CardArray[MaxCards]->GetClientRect(&Rect2);
m_BoundingRect.SetRect(Rect1.left, Rect1.top, Rect2.right, Rect2.bottom);
}
void CPlayer::SetBoundingRect(CRect Rect)
{
m_BoundingRect = Rect;
}
void CPlayer::SetPlayerID(int id)
{
m_PlayerID = id;
}
CHumanPlayer::CHumanPlayer()
{
}
CHumanPlayer::~CHumanPlayer()
{
}
CComputerPlayer::CComputerPlayer()
{
}
CComputerPlayer::~CComputerPlayer()
{
}
void CComputerPlayer::CreateBaseTable()
{
}