📄 crole.h
字号:
//角色类
//作者:吴振华(kylinx)(中国科大01级11系)
//E-mail:game-diy@163.com
//创建于:2003/6/16 by Kylinx
//首次修改于:2003/6/18 by kylinx
//修改内容:角色属性中加上“性格”属性(kidney),适用于敌人在战斗时候的策略
//第二次修改于:2003/6/23 by Kylinx
//修改内容:角色属性中加上dwOldTime和dwFrameDelay,用于控制帧
//第三次修改于:2003/6/27 by Kylinx
//修改内容:增加函数BOOL MoveTo(CLog*pLog,CMap*pMap,int x,int y);
// 增加成员BOOL bMoving,STPath Path;
// int DestPosX,DestPosY;
// int OldDestPosX,OldDestPosY;
//第四次修改于:2003/7/1 by Kylinx
//内容:增加成员nLayer,设定角色层次
//第n次修改于2003/7/11
//内容:增加成员bStandNPC代表npc是否可以随机移动
#ifndef LOA_ROLE_H_ //LOA这个前缀代表Legend Of Atlantis
#define LOA_ROLE_H_
#include<windows.h>
#include"CFindPath.h"
//BTW:为了简单,我全部使用数组而不是指针或者链表
#define LOA_MAX_CARRY_GOODS 32 //每个角色能携带的最大物品数量
#define LOA_MAX_MAGIC 16 //每个角色能拥有的最大魔法数量
#define LOA_ROLE_PLAYER 0 //角色属性——玩家
#define LOA_ROLE_ENEMY 1 //角色属性——普通敌人
#define LOA_ROLE_NPC 2 //角色属性——NPC
#define LOA_ROLE_BOSS 3 //角色属性——BOSS
#define LOA_ROLE_DIR_DOWN 0 //角色方向——下
#define LOA_ROLE_DIR_LEFT 1 //角色方向——左
#define LOA_ROLE_DIR_UP 2 //角色方向——上
#define LOA_ROLE_DIR_RIGHT 3 //角色方向——右
#define LOA_KIDNEY_ATTACK 0x0001 //角色性格——全力攻击类型
#define LOA_KIDNEY_DEFEND 0x0002 //角色性格——注重防守型
#define LOA_KIDNEY_MAGIC 0x0003 //角色性格——注重魔法类型
#define LOA_KIDNEY_ESCAPE 0x0004 //角色性格——逃命类型
class CLog;
class CGame;
class STGood;
struct STMagic;
class CRole
{
public:
int nID; //角色唯一的ID
char szSegmentName[32];
char szName[32]; //角色名字
char szNpcScriptFile[128]; //npc脚本文件
int nKinds; //角色属性
int x,y; //人物在地图上的坐标
int DeltaX,DeltaY;
int Speed; //移动速度
int nMaxStepFrames; //总共有多少移动的帧
int nCurrentStepFrames; //当前帧
DWORD dwOldTime;
DWORD dwFramsDelay; //帧延迟
DWORD dwOldPlanTime;
DWORD dwFindRoadDelay; //旬路延迟
int nDirection; //方向
int nCurrentPathStep; //当前走的路径
int DestPosX,DestPosY; //寻路的目的点
int OldDestPosX,OldDestPosY; //上一个寻路的目的点
STPath Path; //按照A*算法寻到的路径
BOOL bStandNPC; //是否是不移动的NPC
BOOL bMoving; //是否正在按照寻到的路径在移动
BOOL bShow; //是否显示
BOOL bOffsiteOk; //是否偏移完成
int nLayer; //层次,默认为3
//////////////////////////////////////////////////////////////////////////////////////////////
BOOL bDead; //是否死亡
int Kidney; //性格
int Hp; //Hp
int MaxHp; //当前等级最大hp
int Mp; //Mp
int MaxMp; //当前等级最大Mp
int Exp; //经验值
int MaxExp; //当前等级最大经验值
int Level; //等级
int Attack; //总攻击力
int BasicAttack; //基本攻击力
int WeaponAttack; //武器攻击力
int WeaponExp; //武器经验值
int WeaponMaxExp; //武器当前最大经验值
int WeaponLevel; //武器等级
int Defend; //总防御力
int BasicDefend; //基本防御力
int DefendDefend; //防具的防御力
int DefendExp; //防具经验值
int DefendMaxExp; //防具最大经验值
int DefendLevel; //防具等级
int Smart; //敏捷度
int Money; //携带的金钱
int GoodsNum; //当前携带的物品数量
int GoodsData[LOA_MAX_CARRY_GOODS]; //物品数组
//说明一下:这里使用的是,每个数组元素代表携带一件物品
//值对应的是物品的索引,0表示未使用
int MagicNum; //当前拥有的魔法数
int MagicData[LOA_MAX_MAGIC]; //魔法的数据
//值对应的是魔法索引
int nRolePicStyle;
RECT rect[4][3];
/////////////////////////////////////////////////////////////////////////////////////////////
public:
CRole();
virtual ~CRole();
void LevelUp(); //由于升级而重新计算HP,MP,EXP等等
void AddExp(int exp); //增加经验值
void WeaponLevelUp(); //武器升级
void AddWeaponExp(int exp); //增加武器经验值
void DefendLevelUp(); //防具升级
void AddDefendExp(int exp); //增加防具经验值
BOOL AddGoods(int GoodsIndex); //添加物品索引为GoodsIndex的物品,若不能添加则返回false
void DelGoods(int ArrayIndex); //删除物品数据库中第ArrayIndex个物品
void UseGood(STGood*pGood);
void UseMagicInMenu(STMagic*pMagic);
BOOL AddMagic(int MagicIndex); //添加魔法索引为MagicIndex的物品,若不能添加则返回false
void AddMoney(int Money); //改变数量为Money的金钱
int AttackRole(CRole*pRole); //攻击pRole
int DefendRole(CRole*pRole); //防御pRole的攻击
int GetID(){return nID;}
char*GetName(){return szName;}
void ShowRole(BOOL bShow); //是否显示角色
void SetRolePostion(int x,int y); //设置角色坐标
void SetDirection(int nDir); //设置方向
BOOL MoveRole(RECT *prtArea,CGame*pGame); //在范围prtArea内移动一步
void MoveAni(); //移动的动画
BOOL IsRoleComboRole(CRole*pRole);
BOOL GetNextStep(int &x,int &y);
BOOL MoveLeft(CGame*pGame,BOOL bChangeDir=false);
BOOL MoveRight(CGame*pGame,BOOL bChangeDir=false);
BOOL MoveUp(CGame*pGame,BOOL bChangeDir=false);
BOOL MoveDown(CGame*pGame,BOOL bChangeDir=false);
BOOL JudgeAndMoveLeft(CGame*pGame,BOOL bChangeDir=false);
BOOL JudgeAndMoveRight(CGame*pGame,BOOL bChangeDir=false);
BOOL JudgeAndMoveUp(CGame*pGame,BOOL bChangeDir=false);
BOOL JudgeAndMoveDown(CGame*pGame,BOOL bChangeDir=false);
BOOL MoveTo(CLog*pLog,CGame*pGame,int x,int y); //移动到地图上某点
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -