C++游戏系列3:用多文件组织角色类
2016-04-10 20:25
295 查看
更多见:C++游戏系列目录
知识点:项目的多文件组织。一个项目,由多个源文件及相应的头文件构成,将声明与定义分开。
【项目-用多文件组织多个类的程序】
将上一周“项目2-带武器的游戏角色”用“一个项目多个文件”的方式实现,其中两个类的声明放在一个.h文件中,每个类的成员函数分别放一个文件,main()函数用一个文件。体会这样安排的优点。
参考解答:
1.game.h:类声明
2.role.cpp:定义角色类的成员函数
3.weapon.cpp:武器类的成员函数的实现
4.main.cpp:测试函数
知识点:项目的多文件组织。一个项目,由多个源文件及相应的头文件构成,将声明与定义分开。
【项目-用多文件组织多个类的程序】
将上一周“项目2-带武器的游戏角色”用“一个项目多个文件”的方式实现,其中两个类的声明放在一个.h文件中,每个类的成员函数分别放一个文件,main()函数用一个文件。体会这样安排的优点。
参考解答:
1.game.h:类声明
#ifndef GAME_H_INCLUDED #define GAME_H_INCLUDED using namespace std; class Weapon { public: Weapon(string wnam, int f); int getForce(); private: string wname; //名称 int force; //威力 }; 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; }; #endif // GAME_H_INCLUDED
2.role.cpp:定义角色类的成员函数
#include <iostream> #include "game.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; }
3.weapon.cpp:武器类的成员函数的实现
#include <iostream> #include "game.h" using namespace std; Weapon::Weapon(string wnam, int f):wname(wnam),force(f) {} int Weapon::getForce() { return force; }
4.main.cpp:测试函数
#include <iostream> #include "game.h" using namespace std; 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; }
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- 关于指针的一些事情
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- Lua中调用C++函数示例
- Lua教程(一):在C++中嵌入Lua脚本
- Lua教程(二):C++和Lua相互传递数据示例
- C++联合体转换成C#结构的实现方法
- C++高级程序员成长之路
- C++编写简单的打靶游戏
- C++ 自定义控件的移植问题
- C++变位词问题分析
- C/C++数据对齐详细解析
- C++基于栈实现铁轨问题
- C++中引用的使用总结
- 使用Lua来扩展C++程序的方法
- C++中调用Lua函数实例
- Lua和C++的通信流程代码实例
- C与C++之间相互调用实例方法讲解
- 解析C++中派生的概念以及派生类成员的访问属性