第六周项目28-用多文件组织多个类的程序(带武器的角色类)
来源:互联网 发布:中国电信4g网络频段 编辑:程序博客网 时间:2024/06/05 05:32
问题及代码:
//文件1,类的定义,Weapon.h
#ifndef SADF#define SADF#include<string>using namespace std;class Weapon{public: Weapon(string wnam, int f); int getForce();private: string wname; //名称 int force; //威力};#endif/*因为重复包含头文件,所以要在开头结尾加上#ifndef SADF #define SADF #endif*/
//文件2,类的定义,Role.h
#include"Weapon.h"class Role{public: Role(string nam, int b, string wnam, int f); //构造函数 ~Role(); //析构函数 void eat(int d); //吃东西,涨d血 void attack(Role &r); //攻击别人,自己涨血,同时失血 bool isAlived(); //是否活着 void show(); //显示private: string name; int blood; Weapon weapon; bool life;};//文件3,类的实现,Weapon.cpp
#include<iostream>using namespace std;#include"Weapon.h"Weapon::Weapon(string wnam, int f):wname(wnam),force(f) {}int Weapon::getForce(){ return force;}//文件4,类的实现,Role.cpp
#include<iostream>#include"Weapon.h"#include"Role.h"using namespace std;Role::Role(string nam, int b, string wnam, int f):name(nam),blood(b),weapon(wnam,f){ if(blood>0) life=true; else life=false;}Role::~Role(){ cout<<name<<"退出江湖..."<<endl;}void Role::eat(int d) //吃东西,涨d血{ if(isAlived()) blood+=d;}void Role::attack(Role &r) //攻击别人,涨1血{ if(isAlived()) { blood+=weapon.getForce(); r.blood-=weapon.getForce(); if(r.blood<=0) r.life=false; }}bool Role::isAlived() //是否活着{ return life;}void Role::show() //显示{ cout<<name<<" has "<<blood<<" blood, it is "; if(isAlived()) cout<<"alived."; else cout<<"dead."; cout<<endl;}文件5,主函数,demo.cpp
#include <iostream>using namespace std;#include"Role.h"int main( ){ Role mary("Mary", 500, "TuLong",200); Role jack("Jack", 10, "YiTian", 180); cout<<"---begin---"<<endl; mary.show(); jack.show(); cout<<"---1st round---"<<endl; jack.attack(mary); mary.show(); jack.show(); cout<<"---2nd round---"<<endl; mary.attack(jack); mary.show(); jack.show(); cout<<"---end---"<<endl; return 0;}
运行结果:
知识点总结:
在写本程序的时候,发现总是会提示class' type redefinition,最终发现需要在Weapon.h头文件中添加上编译预处理指令才能通过,否则将是重复包含头文件,会出现错误。
学习心得:
使用分文件来编写程序可以使程序模块化,简洁化,看起来更加的直观。
0 0
- 第六周项目28-用多文件组织多个类的程序(带武器的角色类)
- 第六周 用多文件组织多个类的程序(带武器的角色类)
- 项目23--用多文件组织带武器的游戏角色类
- 第六周项目二 带武器的游戏角色类
- 第六周项目二 带武器的角色类
- 第六周项目训练2带武器的角色类
- 第六周项目2--带武器的角色类
- 第六周项目(2)-带武器的游戏角色
- 第六周项目2-带武器的游戏角色(组合类)
- 第六周项目2-带武器的游戏角色(组合类)
- 第六周项目2-带武器的游戏角色
- 第六周项目2-带武器的游戏角色
- 第六周项目二-带武器的游戏角色
- 第六周 项目二 带武器的游戏角色
- 第六周项目2--带武器的游戏角色
- 第六周 项目2-带武器的游戏角色
- 第六周项目2-带武器的游戏角色
- 第六周项目2-带武器的游戏角色
- 【NOIP模拟】有趣的有趣的家庭菜园
- 人脸识别face++ SDK demo体验
- 用到二分搜索的抽签问题
- 对Python、shell的一些思考
- 项目名称:上海地铁游
- 第六周项目28-用多文件组织多个类的程序(带武器的角色类)
- C# kinect v2学习笔记(五)骨骼图像和彩色图像的叠加
- 对团队项目的分析
- 如何编译Apache Hadoop2.2.0源代码
- 算法_动态规划_独立任务最优调度问题
- No matching PlatformTransactionManager bean found for qualifier 'default'的解决办法
- C++ 基础面试, 每日一点
- 绘制热点图
- windows下git识别大小写配置