C++多文件使用格式

今天才发现C++多文件时应如何编写: 以C++实验课任务为例

1、对于一个类即理解为一个模块:
将类的定义写入一个.h文件
类的成员函数等写入一个.cpp文件
2、1)Monster类
monster.h

#ifndef _MONSTER_H_
#define _MONSTER_H_
//定义怪兽类
class Monster
{
    protected:
		int rank;
		int exp;
		int hp;
		int damage;
		int money;
        
    public:
        //构造函数
		Monster(int r = 1, int e = 0, int h = 50, int d = 5, int m = 10);
        
        //怪兽初始属性值随机生成
		void set_rand();
        
        //输出属性
		void display();
        
        //设置属性
        void sethp(int h);
        
        //获取属性
		int gethp();
        int getexp();
        int getmoney();
        void setmoney(int m);
        int getdamage();        
}

#endif

monster.cpp

#include "Monster.h"

//定义怪兽类

//构造函数
Monster::Monster(int r, int e, int h, int d, int m)
{
	rank = r;
	exp = e;
	hp = h;
	damage = d;
	money = m;
}

//怪兽初始属性值随机生成
void Monster::set_rand()
{
    srand(time(NULL));
    rank = rand()%10+1;
	hp = (rand()%rank+1)*5;
	exp = rand()%rank+1;
	damage = rand()%rank+1;
	money = rand()%rank+1;
}

//输出属性
void Monster::display()
{
    cout << "怪兽:\t" << hp << " \t" << rank << "\t" << damage <<
            "\t" << exp << "\t" << money << endl;
}

//设置属性
void Monster::sethp(int h)
{
	hp=h;
}

void Monster::setmoney(int m)
{
	money = m;
}


//获取属性
int Monster::gethp()
{
	return hp;
}
	
int Monster::getexp()
{
	return exp;
}
		
int Monster::getmoney()
{
	return money;
}
		
int Monster::getdamage()
{
	return damage;
}


2)Ultraman类
Ultraman.h

#ifndef _ULTRAMAN_H_
#define _ULTRAMAN_H_

#include "Monster.h"

//超人类
class Ultraman
{
    protected:
		int rank;
		int exp;
		int hp;
		int damage;
		int money;
	public:
		Ultraman(int r=1, int e=0, int h=10, int d=1, int m=0);//构造函数  
		void display();           //打印属性
		void attack(Monster &m);  //攻击
		void attacked(Monster &m);//被攻击
		bool isalive();           //判断活着
		void restore();           //恢复生命值
		void escape();            //逃跑
		void win(Monster &m);     //获胜
        void upgrade();           //升级		
};

Ultraman.cpp

#include "Ultraman.h"

Ultraman::Ultraman(int r, int e, int h, int d, int m)
{
	rank=r;
	exp=e;
	hp=h;
	damage=d;
	money=m;
}
		
void Ultraman::display()
		{
			 cout << "奥特曼:\t" << hp << " \t" << rank << "\t" << damage <<
                  "\t" << exp << "\t" << money << endl;
		}

//攻击
void Ultraman::attack(Monster &m)
{
	int h = m.gethp();
	int mon = m.getmoney();
	int e = m.getexp();
	if (h>damage)
	{
        m.sethp(h-damage);
		attacked(m);
		if((mon % 2) && (mon > 0)) 
		{	
			money++;
			m.setmoney(--mon);
		}
		exp++;
		//可能会升级
		upgrade();
	}
	else
	{
		m.sethp(0);
		win(m);
	}
}

//被攻击
void Ultraman::attacked(Monster &m)
{
	hp -= (m.getdamage()/2);
}

//判断活着
bool Ultraman::isalive()
{
	return hp>0;
}

//恢复生命值
void Ultraman::restore()
{
	if(money < 10)
		cout << "金币不足" << endl;
	while(1)
	{
		if(money >= 10)
		{
			money -= 10;
			hp++;
		}
		else
			break;
	}
}

//逃跑
void Ultraman::escape()
{
	hp--;
}

//获胜
void Ultraman::win(Monster &m)
{	
	exp = exp + m.getexp();
	money = money + m.getmoney();
	//可能会升级
	upgrade();
}

//升级
void Ultraman::upgrade()
{
	while(1)
	{
		if(exp >= 10*rank)
		{
			exp -= (10*rank);//经验值减去相应值		
			rank++; //升级
			hp = 10*rank; //满血
			damage = rank;//提升攻击力
		}
		else
			break;
	}
}

3)main.cpp

#include "iostream"
#include "Monster.h"
#include "Ultraman.h"
using namespace std;

int main()
{
    cout<<"Start!"<<endl;
    Ultraman u;
	Monster m;
	int chose;
	int num1 = 0;
	int num2 = 0;


	while(1)
	{
	    //遇到一个怪兽
 		m.set_rand();
		num2++;
		cout << "遇到第" << num2 <<"个怪兽" << endl;
		
		while(1)
		{
			cout << "\t生命值\t等级\t攻击力\t经验\t钱财" << endl;
		  
			//显示超人和怪兽属性
			u.display();
			m.display();
			
			cout << "\n请输入你的选择:";
	    	cin >> chose;
			switch(chose)
			{
				//攻击
				case 1:
                    while(1)
                    {    
                        if(u.isalive() && m.gethp())//奥特曼和怪兽都活着
                        {
                            u.attack(m); //攻击
                        }
                        else
                            break;
                    }
					break;
				//逃跑
				case 2:
					u.escape();
					break;
				//补血
				case 3:
					u.restore();
					break;
				case 4:
					break;
				default:
					cout << "错误,请输入整数1~4!" << endl;
					break;
			}
			//输入4或者奥特曼死亡或者怪兽被打死或逃跑
			if((chose == 4) || (u.isalive() == 0) || (m.gethp() == 0) || (chose==2))
			{
				if(m.gethp() == 0)
				{
					num1++;
					cout << "打死第" << num1 <<"个怪兽" << endl;
				}
				cout << "\n";
				break;
			}
		}
		if((chose == 4) || (u.isalive() == 0))
		{
			if(u.isalive() == 0)
				cout << "奥特曼死亡" << endl;
				break;
		}
	}

	cout << "Game over!" << endl;
	return 0;
}

此处只是为了说明我认识的C++应该如何编写多文件,勿喷,谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值