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

📄 ctank.hpp

📁 本游戏是一款单机版的坦克大战游戏
💻 HPP
字号:
//////////////////////////////////////////////////////////////////////////////////////////////////
//      #                                                                               #       //
//		#		* File Name:	CTank.cpp												#	    //
//		#																				#	    //
//		#		* Function:		the engine of the game									#	    //
//		#																				#	    //
//		#		* Instruction:	Created by JIAN NAN FEI 2008 8 29						#	    //
//      #                                                                               #       //
///////////////////////////////////////////////////////////////////////////////////////////////////

//----------------------------------------------------------------------------------------------//
//										DEFINES REFERENCES HERE									//
//----------------------------------------------------------------------------------------------//



//----------------------------------------------------------------------------------------------//
//										HEADFILES REFERENCES HERE								//
//----------------------------------------------------------------------------------------------//

	#include "CTank.h"

//----------------------------------------------------------------------------------------------//
//										GLOBAL MEMBER VARIAYS REFERENCES HERE					//
//----------------------------------------------------------------------------------------------//


//----------------------------------------------------------------------------------------------//
//										FUNCTION MEMBERS REFERENCES HERE						//
//----------------------------------------------------------------------------------------------//

	CTank::CTank()
	{
		SetLifeCount(0);
		SetLifeTimes(0);
		SetLivingState(0);
		SetMoveDirection(-1);
		SetShootDirection(-1);
		SetNowPos(-100,-100);
		SetPower(0);
		SetRect(0,0,0,0);
		SetTankBelong(-1);
		SetTankState(0);
		SetType(0);
		SetSpeed(0);
	}

	CTank::CTank(int Type,int power,int lifecount,int lifetimes,int belong,POINT point,
			int movedirection,int shootdirection,int speed,int top,int bottom,int left,int right)
	{
		SetLifeCount(lifecount);
		SetLifeTimes(lifetimes);
		SetLivingState(0);
		SetMoveDirection(movedirection);
		SetShootDirection(shootdirection);
		SetNowPos(point.x,point.y);
		SetPower(power);
		SetRect(left,right,top,bottom);
		SetTankBelong(belong);
		SetTankState(0);
		SetType(Type);
		SetSpeed(speed);
	}

	int CTank::RandDirection()
	{
		if(IsLivable())
		switch(rand()%4)
		{
		case 0:
			return TANK_MOVE_UP;
			break;
		case 1:
			return TANK_MOVE_DOWN;
			break;
		case 2:
			return TANK_MOVE_LEFT;
			break;
		case 3:
			return TANK_MOVE_RIGHT;
			break;
		}

		return TANK_MOVE_UP;
	}
	
	void CTank::SetTank(int type,int belong)
	{
		SetLifeCount(TANK_BASIC_LIFECOUNT);
		SetLifeTimes(TANK_BASIC_LIFETIMES);
		SetLivingState(TRUE);
		SetMoveDirection(TANK_MOVE_UP);
		SetShootDirection(TANK_MOVE_UP);
		SetPower(TANK_BASIC_POWER*type);
		SetRect(0,TANK_WIDTH,0,TANK_HEIGHT);
		SetTankBelong(belong);
		SetTankState(TANK_STATE_MOVE);
		SetType(type);
		SetSpeed(TANK_BASIC_SPEED+type*3/8);		
	}

	void CTank::Move()
	{
		switch(m_nMoveDirection)
		{
		case TANK_MOVE_UP:
			MoveUp();
			break;
		case TANK_MOVE_DOWN:
			MoveDown();
			break;
		case TANK_MOVE_LEFT:
			MoveLeft();
			break;
		case TANK_MOVE_RIGHT:
			MoveRight();
			break;
		}
	}
	
	int CTank::GetReverseDirection()
	{
		switch(m_nMoveDirection)
		{
		case TANK_MOVE_UP:
			return(TANK_MOVE_DOWN);
			break;
		case TANK_MOVE_DOWN:
			return(TANK_MOVE_UP);
			break;
		case TANK_MOVE_LEFT:
			return(TANK_MOVE_RIGHT);
			break;
		case TANK_MOVE_RIGHT:
			return(TANK_MOVE_LEFT);
			break;
		}
		return -1;
	}

	void CTank::BeAttacked(int power)
	{
		if(IsBeAttacked())
		{
			m_tTank.m_nLifeCount-=power;
			if(m_tTank.m_nLifeCount<=0)
			{
				SetTankState(0);
				SetLivingState(FALSE);
			}
		}
	}

	BOOL CTank::Attack()
	{
		if(IsAttackable())
		{
			switch(m_nMoveDirection)
			{
			case TANK_MOVE_UP:
				SetShootDirection(TANK_SHOOT_UP);
				break;
			case TANK_MOVE_DOWN:
				SetShootDirection(TANK_SHOOT_DOWN);
				break;
			case TANK_MOVE_LEFT:
				SetShootDirection(TANK_SHOOT_LEFT); 
				break;
			case TANK_MOVE_RIGHT:
				SetShootDirection(TANK_SHOOT_RIGHT);
				break;
			}
			return TRUE;
		}
		return FALSE;
	}

//----------------------------------------------------------------------------------------------//
//										COMPLISHMENT OF THE FILE    							//
//----------------------------------------------------------------------------------------------//

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -