tlink.cpp
来自「一个另类的坦克大战源程序」· C++ 代码 · 共 143 行
CPP
143 行
// TLink.cpp: implementation of the TLink class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "TLink.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
TLink::TLink()
{
m_pHeader = NULL;
}
TLink::~TLink()
{
DeleteAll();
}
void TLink::AddHeader(TObject * pObject)
{
ASSERT(pObject);
TLinkNode * pAddNode = NEW TLinkNode(pObject);
pAddNode->m_pNext = m_pHeader;
m_pHeader = pAddNode;
}
void TLink::AddTail(TObject * pObject)
{
ASSERT(pObject);
TLinkNode * pAddNode = NEW TLinkNode(pObject);
if(m_pHeader==NULL)
{
m_pHeader = pAddNode ;
m_pHeader->m_pNext = NULL;
}else
{
TLinkNode * pNode = m_pHeader ;
while(pNode->m_pNext)
{
ASSERT(pObject!=pNode->m_pObject);
pNode = pNode->m_pNext ;
}
pNode->m_pNext = pAddNode ;
pAddNode->m_pNext = NULL;
}
}
void TLink::Add(TObject * pObject)
{
AddHeader(pObject);
}
void TLink::DeleteAll()
{
TLinkNode * pNode = m_pHeader;
while(pNode)
{
m_pHeader = pNode->m_pNext ;
delete pNode ;
pNode = m_pHeader;
}
}
void TLink::Delete(TObject * pObject)
{
TLinkNode * pPreNode = m_pHeader ;
if(m_pHeader->m_pObject == pObject)
{
m_pHeader = m_pHeader->m_pNext ;
delete pPreNode ;
return ;
}
TLinkNode * pNode = pPreNode->m_pNext ;
while(pNode)
{
if(pNode->m_pObject == pObject)
{
pPreNode->m_pNext = pNode->m_pNext ;
delete pNode;
return ;
}
pPreNode = pNode ;
pNode = pNode->m_pNext ;
}
}
///////////////////////////////
//画出链表中所有的对象
void TLink::DrawAll()
{
TLinkNode * pNode = m_pHeader;
while(pNode)
{
pNode->m_pObject->Draw();
pNode = pNode->m_pNext ;
}
}
////////////////////////////////////////////
//移动链表中所有的对象
void TLink::MoveAll()
{
//取得第一个结点
TLinkNode * pNode = m_pHeader;
//循环整个链表
while(pNode)
{
if(pNode->m_pObject->IsDead())
{
//该对象已经被击毁,从链表中删除
TObject * pDeleteObj = pNode->m_pObject;
pNode = pNode->m_pNext ;
Delete(pDeleteObj);
}
else
{
//调用该对象的Move()函数
pNode->m_pObject->Move();
pNode = pNode->m_pNext ;
}
}
}
BOOL TLink::HitTestAll(TObject * pObj)
{
TLinkNode * pNode = m_pHeader;
BOOL bHit = FALSE;
while(pNode && bHit==FALSE)
{
if(pNode->m_pObject != pObj)
bHit=pNode->m_pObject->HitTest(pObj);
pNode = pNode->m_pNext ;
}
return bHit;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?