📄 containerobject.cpp
字号:
// ContainerObject.cpp: implementation of the CContainerObject class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "ContainerObject.h"
#include "MainGame.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CContainerObject* CContainerObject::pFirst=0;
CContainerObject::CContainerObject()
{
}
CContainerObject::CContainerObject(CContainerObject *t)
{
t->pNext=pFirst;
pFirst=t;
}
CContainerObject::~CContainerObject()
{
if(pFirst==this) //删除头结点时
{ //无须delete,在子类中
pFirst = pNext;
return;
}
else
{
CContainerObject *temp=pFirst;
for(;temp;temp=temp->pNext)
{
if(temp->pNext==this)//找到
{
temp->pNext=this->pNext;
return;
}
}
}
return;
}
void CContainerObject::ActiveAll()
{
CContainerObject *temp=pFirst;
/////////////////////////画最后一个结点
while(temp->pNext)temp=temp->pNext;
temp->ActiveObject();
/////////////////////////画其余的结点
temp=pFirst;
while(temp)
{
if(temp->pNext)
{
if(!temp->ActiveObject())
{
CContainerObject *t=temp;
temp=temp->pNext;
delete t;
}
else temp=temp->pNext;
}
else temp=temp->pNext;
}
}
void CContainerObject::ReleaseAll()
{
CContainerObject *temp=pFirst;
for(;temp;)
{
CContainerObject *t=temp;
temp=temp->pNext;
delete t;
}
}
int CContainerObject::GetBulletNum(CContainerObject *t)
{
int n=0;
CContainerObject *temp=pFirst;
for(;temp;temp=temp->pNext)
{
if(temp->type==t->type)
//if(temp->type<=7)
n++;
}
return n-1; //坦克本身的type和其子弹相同
}
///////////////////////////////////////////
//
// 1 player1 2 player2 3 all 0 none
////////////////////
int CContainerObject::GetPlayerTankNum()
{
int n=0;
CContainerObject *temp=pFirst;
for(;temp;temp=temp->pNext)
{
if(strcmp(temp->name,"PlayerTank")==0)
{
if(temp->type<=3)
n+=1; //player2
else
if(temp->type<=7)
{
n+=2; //player1
}
}
}
return n;
}
int CContainerObject::GetEnemyTankNum()
{
int n=0;
CContainerObject *temp=pFirst;
for(;temp;temp=temp->pNext)
{
if(temp->type>7)
{
n+=1;
}
}
return n;
}
void CContainerObject::KillAllEnemyTank()
{
CMainGame *pMainGame=(CMainGame*)AfxGetMainWnd();
CContainerObject *temp=pFirst;
while(temp)
{
if(temp->type>7 && temp->type<20)
{
CContainerObject *t=temp;
if(strcmp(temp->name,"EnemyTank")==0)
{
pMainGame->Enemy--;
}
temp=temp->pNext;
delete t;
}
else temp=temp->pNext;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -