C++控制台RPG游戏具体实现思路: 任务系统

接受任务,提交任务,显示任务

玩家里面应该有一个容器,用来存放已接收的任务,

任务NPC里面也应该有一个容器,用来存放开启的任务

接受任务:

1.不同NPC对应不同任务:

任务数据里面应该对应包含NPCID属性。由此实现不同npc对应不同任务(同商店)

2.NPC里面有开启的任务,和没开启的任务:

任务数据应该具有是否开启的属性,满足条件开启任务,否则不开启,NPC里面只显示开启的任务。

3.接受任务后,玩家任务窗口里应当显示当前任务,以及任务进度。完成任务后,任务属性应当变为已完成。

如何实现任务进度?

提交任务:

当当前任务完成时,提交任务成功,并获取相应奖励。

显示任务:

玩家应当包含一个装有已接任务的容器,定义对任务属性的数据更新和渲染(装备和技能是否也是如此?装备和任务系统是否可以都继承某个窗口类,所以玩家里面应该包含装备管理者、技能管理者、任务管理者的成员去进行管理),当按下某个建的时候,gameMgr对任务进行数据更新和渲染。对窗口基类进行数据更新、以及渲染。(battle我是直接归游戏管理者管理了,事实上,让其属于map管理(battl只需要enemy和player数据,map中均可以拿到),这样battle也能够变成一个窗口延伸了。)

任务是商品吗?任务不应当是商品。任务应当单独配表

三、不同任务不同的达成条件:

1.杀怪   2.找npc  3.购买相关物品

四、完成任务后获取相关奖励

1.经验、金币

2.装备

3.开启相应任务

具体实现:

整个任务系统包含三个类:CMission类、MissionMgr类、CMissionNpc类、CRecivedMission类

四个类分别进行:CMission:任务的逻辑处理,如获取奖励,判断任务是否完成等。

CMissionMgr类:创建所有任务、并对其初始化,获取已接任务和已解锁任务分别传给CRecivedMission类和CMissionNpc类。

CMissionNpc类:任务NPC的处理,和商店买卖物品类似的功能,处理任务的接受、提交、对话等

CRecivedMission类:玩家的任务窗口,用于显示已经接受的任务、以及任务描述等

源代码:

CMission类:

#pragma once
#include "Talk.h"
class CMission
{
public:
	CMission();
	~CMission();
	void getReward();
	int getID()
	{
		return m_nID;
	};
	void initMission(SMissionDt* data);
	void showName();
	void showDescripe();
	void showSchedule();
	void updataIsAchieve();
	CTalk* getTalk(){ return m_pTalk; }
	CTalk* getFinishTalk(){ return m_pFinishTalk; }
	int getNpcID(){ return m_nNpcID; };
	GETTER_SETTER(bool, isAchieve, m_bIsAchieve);
	GETTER_SETTER(bool, isRecived, m_bIsRecived);
	GETTER_SETTER(bool, isUnlock, m_bIsUnlocked);
private:
	int m_nID;
	int m_nNpcID;
	char m_szName[32];
	char m_szDescripe[128];
	CTalk* m_pTalk;
	CTalk* m_pFinishTalk;

};

MissionMgr类:

#pragma once
#include "Mission.h"
class CMissionMgr
{
public:
	CMissionMgr();
	~CMissionMgr();
	void creatAllMission();
	vector<CMission*>getUnlockMission();
	vector<CMission*>getRecivedMission();
	CMission* getMission(int nID);
private:
	vector<CMission*>m_vecMissions;
};

CMissionNpc类: 


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值