📄 ctank.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 + -