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

📄 role.cpp

📁 一个用C++写的文字类游戏
💻 CPP
字号:
#include "StdAfx.h"
#include "windows.h"
#include ".\role.h"
#include "globalObject.h"
extern CGlobalObject g_Object;
CRole::CRole(void)
{
	m_nRoleType = ROLE_MONSTER;
	m_nLevel = 1;
	m_nExperience = 0;
	m_nBlood = 1;
	m_nAttack = 0;
	m_nDefend = 0;
	m_nBaseAtt = 0 ;
	m_nBaseDef = 0;
	m_nPosX = m_nPosY = 0;
	m_nMaxBlood = 0;
	memset(m_strName, 0, 30);
}

CRole::~CRole(void)
{
}

void CRole::InitByLevelAndType(int nLevel, int nType)
{
	m_nRoleType = nType;
	m_nLevel = nLevel;
	if (m_nRoleType == ROLE_PROTAGONIST) {
		m_nExperience = 0;
		m_nMaxBlood = m_nBlood = 100 + m_nLevel * 30;
		m_nBaseAtt = 20 + m_nLevel*5;
		m_nBaseDef = 10 + m_nLevel*10;
		m_nAttack = m_nBaseAtt;
		m_nDefend = m_nBaseDef;
		m_nPosX = m_nPosY = 0;
	} else {
		m_nExperience = 0;
		m_nMaxBlood = m_nBlood = 200 + m_nLevel * 30;
		m_nBaseAtt = 30 + m_nLevel*5;
		m_nBaseDef = 30 + m_nLevel*10;
		m_nAttack = m_nBaseAtt;
		m_nDefend = m_nBaseDef;
	}
}

void CRole::InitNPC(int nLevel, int nType, int nPosX, int nPosY)
{
	InitByLevelAndType(nLevel,nType);
	m_nPosX = nPosX;
	m_nPosY = nPosY;
}

//根据自身的经验情况来判断升级与否,但就算经验足够也最多打一个怪升一级。
void CRole::Upgrade()
{
	int nNeed = m_nLevel * 50;
	int nLeave = m_nExperience - nNeed;
	if (m_nExperience >= nNeed) {
		InitNPC(m_nLevel + 1,m_nRoleType, m_nPosX, m_nPosY);
		m_nExperience = nLeave;
		vector<ROLE_EQUIP>::iterator iter;
		for (iter = g_Object.m_vecEquip.begin(); iter != g_Object.m_vecEquip.end(); iter++) {
			if (iter->nType == 1) {
				m_nAttack = m_nBaseAtt + iter->nAttribute;
			} else if (iter->nType == 2) {
				m_nDefend = m_nBaseDef + iter->nAttribute;
			}
		}
		g_Object.SetColor(FOREGROUND_GREEN);
		cout<<m_strName<<"升到"<<m_nLevel<<"级!"<<endl;
	
	}


}

⌨️ 快捷键说明

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