?? role.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 + -