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

📄 player.h

📁 小rpg游戏vc代码
💻 H
字号:
#include <iostream.h>
#include <iomanip.h>//用于设置域宽
#include <stdlib.h>
#include <time.h>//用于产生随机因子
#include "container.h"
enum property{sw,ar,mg};//设置三种职业属性,枚举类型
class Player//人物类
{
	friend void showinfo(Player &p1,Player &p2);//显示两个玩家的信息
	friend class Swordsman;
	friend class Archer;
	friend class Mage;
protected:
	int HP,HPmax,MP,MPmax,AP,DP,speed,EXP,LV;//一般属性
	char name[10];//人物名称
	property role;//人物职业(角色)
	container bag;//物品栏
public:
	virtual bool attack(Player &p)=0;//普通攻击,纯虚函数
	virtual bool specialatt(Player &p)=0;//特殊攻击,纯虚函数
	virtual void isLevelUp()=0;//升级设定,纯虚函数
	void ReFill();//每版结束后人类玩家生命值魔法值恢复
	bool Death();//告知是否人物已经死亡
	void isDead();//判断人物是否死亡
	bool useHeal();//使用回复剂,与职业无关
	bool useMW();//使用魔法水,与职业无关
	void transfer(Player &p);//敌人杀死后,人类玩家获得对方物品
	char showRole();//显示人物的职业
protected:
	bool death;//是否死亡
};
void Player::ReFill()
{
	HP=HPmax;
	MP=MPmax;
}
bool Player::Death()
{
	return death;
}
void Player::isDead()
{
	if (HP<=0)
	{
		cout <<name <<"已阵亡。" <<endl;
		system("pause");
		death=1;
	}
}
bool Player::useHeal()
{
	if (bag.nOfHeal()>0)
	{
		HP=HP+100;
		if (HP>HPmax)
			HP=HPmax;
		cout <<name <<"使用了回复剂,生命值增加了100。" <<endl;
		bag.useHeal();
		system("pause");
		return 1;//使用回复剂操作成功
	}
	cout <<"对不起,您没有回复剂可以使用了。" <<endl;
	system("pause");
	return 0;//使用回复剂操作失败
}
bool Player::useMW()
{
	if (bag.nOfMW()>0)
	{
		MP=MP+80;
		if (MP>MPmax)
			MP=MPmax;
		cout <<name <<"使用了魔法水,魔法值增加了80。" <<endl;
		bag.useMW();
		system("pause");
		return 1;
	}
	cout <<"对不起,您没有魔法水可以使用了。" <<endl;
	system("pause");
	return 0;
}
void Player::transfer(Player &p)
{
	cout <<name <<"获得了" <<p.bag.nOfHeal() <<"个回复剂和" <<p.bag.nOfMW() <<"个魔法水。" <<endl;
	system("pause");
	bag.set(bag.nOfHeal()+p.bag.nOfHeal(),bag.nOfMW()+p.bag.nOfMW());
}
char Player::showRole()
{
	switch(role)
	{
	case sw:
		cout <<setw(6) <<"剑士";
		break;
	case ar:
		cout <<setw(6) <<"弓箭手";
		break;
	case mg:
		cout <<setw(6) <<"法师";
		break;
	default:
		break;
	}
	return ' ';
}
void showinfo(Player &p1,Player &p2)//纯粹的输出问题
{
	cout <<"###################################################" <<endl;
	cout <<"# 玩家 " <<setw(11) <<p1.name <<" LV." <<setw(3) <<p1.LV <<"# 敌人 " <<setw(11) <<p2.name <<" LV." <<setw(3) <<p2.LV <<'#' <<endl;
	cout <<"# HP " <<setw(3) <<(p1.HP<=999?p1.HP:999) <<'/' <<setw(3) <<(p1.HPmax<=999?p1.HPmax:999) <<" MP " <<setw(3) <<(p1.MP<=999?p1.MP:999) <<'/' <<setw(3) <<(p1.MPmax<=999?p1.MPmax:999) <<"  # HP "<<setw(3) <<(p2.HP<=999?p2.HP:999) <<'/' <<setw(3) <<(p2.HPmax<=999?p2.HPmax:999) <<" MP " <<setw(3) <<(p2.MP<=999?p2.MP:999) <<'/' <<setw(3) <<(p2.MPmax<=999?p2.MPmax:999) <<"  #"<<endl;
	cout <<"# AP " <<setw(3) <<(p1.AP<=999?p1.AP:999) <<" DP " <<setw(3) <<(p1.DP<=999?p1.DP:999) <<" Speed " <<setw(3) <<(p1.speed<=999?p1.speed:999) <<"# AP " <<setw(3) <<(p2.AP<=999?p2.AP:999) <<" DP " <<setw(3) <<(p2.DP<=999?p2.DP:999) <<" Speed " <<setw(3) <<(p2.speed<=999?p2.speed:999) <<'#' <<endl;
	cout <<"# EXP" <<setw(7) <<p1.EXP <<" 职业 ";
	cout <<p1.showRole();
	cout <<"# EXP" <<setw(7) <<p2.EXP <<" 职业 ";
	cout <<p2.showRole() <<'#' <<endl;
	cout <<"###################################################" <<endl;
	p1.bag.display();
}




		



⌨️ 快捷键说明

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