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() 
{ 
}