游戏中使用的子弹
创建子弹时选择飞行和击中的方式。可以实现多种组合
#include
#include "BulletBase.h"
#include "templateArgs.h"
#include
#include
int main()
{
BulletBase m1(0,0);
BulletBase m2(0,1);
BulletBase m3(1,0);
BulletBase m4(1,1);
m1.Run();
m2.Run();
m3.Run();
m4.Run();
system("pause");
return 0;
}
#pragma once
#include
#include
class BulletBase
{
public:
BulletBase(int a, int b);
virtual ~BulletBase(void);
public:
typedef std::function fpi;
std::vector vFuncFly;
std::vector vFuncHurt;
void Set(int a, int b);
void Run();
void Fly();
void Hurt();
private:
int m_a;
int m_b;
};
#include "BulletBase.h"
#include
using namespace std;
BulletBase::BulletBase(int a, int b)
: m_a(a)
, m_b(b)
{
vFuncFly.push_back( [](){cout << "fly1直线飞行" << endl;} );
vFuncFly.push_back( [](){cout << "fly2跟踪弹" << endl;} );
vFuncHurt.push_back( [](){cout << "hurt1点伤害" << endl;} );
vFuncHurt.push_back( [](){cout << "hurt2范围伤害" << endl;} );
}
BulletBase::~BulletBase(void)
{
}
void BulletBase::Set(int a, int b)
{
m_a = a;
m_b = b;
}
void BulletBase::Run()
{
vFuncFly[m_a]();
vFuncHurt[m_b]();
}
void BulletBase::Fly()
{
vFuncFly[m_a]();
}
void BulletBase::Hurt()
{
vFuncHurt[m_b]();
}