⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 containerobject.cpp

📁 坦克游戏
💻 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 + -