NPC框架

#include <iostream>
#include "NPC.h"

using namespace std;


void main()
{
	Girl_Sword_NPC buildGirl;
	NPC* pGirlNPC = buildGirl.Create_Girl_Sword_NPC();
	pGirlNPC->recvState(0);
	pGirlNPC->Show();
	pGirlNPC->recvState(2);
	pGirlNPC->Show();
	delete pGirlNPC;

	Boy_Sword_NPC buildBoy;
	NPC* pBoyNPC = buildBoy.Create_Girl_Sword_NPC();
	pBoyNPC->recvState(0);
	pBoyNPC->Show();
	pBoyNPC->recvState(2);
	pBoyNPC->Show();
	delete pBoyNPC;

	system("pause");
}

 
#include <iostream>
#include <map>
#include <string.h>


using namespace std;


class NPC
{
public:
	//收到转换状态
	virtual void recvState(int _iID){ m_dCurStateID = _iID; }
	//显示
	virtual void Show()
	{
		string szText = m_dStateSet[m_dCurStateID];
		cout<<"当前状态 \""<<szText.c_str()<<"\""<<endl;
	}
private:
	NPC():m_dCurStateID(-1){}
	map<int, string> m_dStateSet;
	int m_dCurStateID;
	friend class NPCBuilder;
};



//NPC创建者
class NPCBuilder
{//建造者,对客户屏蔽目标的内部生成功能,暂时提供外部的生成选择,过后只提供目标的使用功能的权限。
public:
	//创建NPC
	void Build_NPC(){ m_pNPC = new NPC();}
	//施放火球攻击法术状态
	void Build_FireBallMagicState(string szMagic){ m_pNPC->m_dStateSet[0] = szMagic; }
	//被攻击状态
	void Build_BeAttackedState(string szBeAttacked){ m_pNPC->m_dStateSet[1] = szBeAttacked; }
	//搜索AI
	void Build_AIEngine(string szSearchAI){ m_pNPC->m_dStateSet[2] = szSearchAI; }
	//获得NPC
	NPC* Get_NPC(){ return m_pNPC; }
private:
	NPC* m_pNPC;
};


//女剑士_NPC   
class Girl_Sword_NPC  
{ 
public:
	static NPC* Create_Girl_Sword_NPC()
	{
		NPCBuilder builder;
		builder.Build_NPC();
		builder.Build_FireBallMagicState("女式火球攻击术");
		builder.Build_BeAttackedState("女式被攻击状态");
		builder.Build_AIEngine("女式搜索AI");
		return builder.Get_NPC();
	}
};

//男剑士_NPC   
class Boy_Sword_NPC  
{ 
public:
	static NPC* Create_Girl_Sword_NPC()
	{
		NPCBuilder builder;
		builder.Build_NPC();
		builder.Build_FireBallMagicState("男式火球攻击术");
		builder.Build_BeAttackedState("男式被攻击状态");
		builder.Build_AIEngine("男式搜索AI");
		return builder.Get_NPC();
	}
};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值