第八周项目四-角色有多样武器
来源:互联网 发布:淘宝价格用什么字体 编辑:程序博客网 时间:2024/05/19 09:13
/* *Copyright(c)2016,烟台大学计算机与控制工程学院 *All rights reserved *文件名称:123.cpp *作 者:王蕊 *完成日期:2016年4月19日 *版 本 号:v1.0 * *问题描述:用多文件组织程序。 */1.123.h:类声明#ifndef GAME_H_INCLUDED#define GAME_H_INCLUDED#include <string>using namespace std;const int N=10; const int NOWEAPON=-1; class Point {public: Point(int x=0, int y=0); int getX(); int getY(); double distance(const Point &p); //返回与另外一点p之间的距离 void moveTo(int x, int y); void move(int dx, int dy); private: int x, y;};class Weapon{public: Weapon(){}; Weapon(string wnam, int f, double k); Weapon(const Weapon&); string getWname(); int getForce(); double getKillRange(); //返回杀伤距离private: string wname; int force; double killRange; };class Role{public: Role(string nam, int b, Point l, Weapon w[], int n); ~Role(); void eat(int d); void attack(Role &r); void beAttack(int f); double distance(Role &r); bool isAlived(); void moveTo(int x, int y); void move(int dx, int dy); void changeWeapon(int wno); void show(); private: string name; int blood; bool life; Point location; Weapon weapons[N]; int weaponNum; int holdWeapon; };#endif // GAME_H_INCLUDED2.point.cpp,定义点类,表示位置#include "123.h"#include <cmath>Point::Point(int x, int y): x(x), y(y) { }int Point::getX(){ return x;}int Point::getY(){ return y;}void Point::moveTo(int x, int y){ this->x=x; this->y=y;}void Point::move(int dx, int dy){ this->x+=dx; this->y+=dy;}double Point::distance(const Point& p){ double dx = this->x - p.x; double dy = this->y - p.y; return (sqrt(dx * dx + dy * dy));}3.weapon.cpp,定义武器类#include "123.h"Weapon::Weapon(string wnam, int f, double k):wname(wnam),force(f),killRange(k) {}Weapon::Weapon(const Weapon &w):wname(w.wname),force(w.force),killRange(w.killRange) {}string Weapon::getWname(){ return wname;}int Weapon::getForce(){ return force;}double Weapon::getKillRange(){ return killRange;}4.role.cpp,定义角色类,表示参与游戏的角色#include <iostream>#include "123.h"using namespace std;Role::Role(string nam, int b, Point l, Weapon w[], int n) :name(nam),blood(b),location(l),weaponNum(n),holdWeapon(NOWEAPON){ if(blood>0) life=true; else life=false; for(int i=0; i<n; i++) weapons[i]=w[i];}Role::~Role(){ cout<<name<<"退出江湖..."<<endl;}void Role::eat(int d) { blood+=d; if(blood>0) life=true;}void Role::attack(Role &r){ if(isAlived()&&holdWeapon>NOWEAPON&&weapons[holdWeapon].getKillRange()>this->distance(r)) { blood+=weapons[holdWeapon].getForce(); r.beAttack(weapons[holdWeapon].getForce()); }}void Role::beAttack(int f){ blood-=f; if(blood<=0) life=false;}double Role::distance(Role &r){ return location.distance(r.location);}void Role::changeWeapon(int wno){ if(wno<weaponNum) holdWeapon=wno;}bool Role::isAlived(){ return life;}void Role::moveTo(int x, int y){ if(isAlived()) location.moveTo(x,y);}void Role::move(int dx, int dy){ if(isAlived()) location.move(dx,dy);}void Role::show(){ cout<<name<<" has "<<blood<<" blood, hold "; if(holdWeapon==NOWEAPON) cout<<"no weapon"; else cout<<weapons[holdWeapon].getWname(); cout<<". He is in ("<<location.getX()<<", "<<location.getY()<<") and "; if(isAlived()) cout<<"alived."; else cout<<"dead."; cout<<endl;}5.main.cpp,测试函数,表示位置#include <iostream>#include "123.h"using namespace std;int main( ){ Weapon w1[1]= {Weapon("Gold stick",200, 100)}; Weapon w2[3]= {Weapon("Fire-Tip Lance",180,300), Weapon("Universal Ring",100,500), Weapon("Sky Muddling Damask",50,1000) }; Role wuKong("WuKong", 500, Point(0, 0), w1, 1); Role neZha("NeZha", 210, Point(30,30), w2, 3); wuKong.changeWeapon(0); neZha.changeWeapon(0); cout<<"---begin---"<<endl; wuKong.show(); neZha.show(); cout<<"---1st round---"<<endl; wuKong.attack(neZha); wuKong.show(); neZha.show(); cout<<"---2nd round---"<<endl; neZha.changeWeapon(2); neZha.attack(wuKong); wuKong.show(); neZha.show(); cout<<"---3rd round---"<<endl; neZha.moveTo(100,100); wuKong.attack(neZha); wuKong.show(); neZha.show(); cout<<"---4th round---"<<endl; neZha.attack(wuKong); wuKong.show(); neZha.show(); cout<<"---then---"<<endl; neZha.attack(wuKong); neZha.attack(wuKong); wuKong.attack(neZha); wuKong.show(); neZha.show(); cout<<"---end---"<<endl; return 0;}
学习心得:用多文件组织程序。
0 0
- 第八周项目四-角色有多样武器
- 第八周项目四 游戏中的角色类增强版
- 第八周项目四—游戏中的角色类
- 第八周项目四—游戏中的角色类
- 第八周-不止有一件武器
- 第八周项目四
- 第八周项目四
- 第八周项目四
- 第八周项目四(1)-游戏中角色类的增强版
- 第八周项目四(2)-游戏中角色类的增强版
- 第八周项目四(3)-游戏中角色类的增强版
- 第6周-项目2-带武器的游戏角色
- 第六周项目二 带武器的游戏角色类
- 第六周项目2-带武器的游戏角色
- 第五周项目24-角色的武器类
- 第六周项目2-带武器的游戏角色
- 第六周项目二-带武器的游戏角色
- 第6周项目2带武器的游戏角色
- 架构设计:系统间通信——提高ActiveMQ工作性能(下)
- 数据库设计三大范式
- LeetCode------Add Digits
- 【C++】复数类
- POJ 迷宫问题+基础bfs
- 第八周项目四-角色有多样武器
- 关于Xcode的错误分析和处理
- Hadoop(二)实现SSH互联
- Sping+ActiveMQ整合
- UVA 11039 Building Designing
- 解决Android页面跳转过程中黑屏时间过长问题
- Oracle 索引 详解
- 畅通工程
- 大数阶乘的其他方法