题目描述
在实验《类定义》的基础,改进并实现游戏中的两个类:奥特曼类和怪兽类。使得两个类更加接近实际要求。

奥特曼说明如下:

  1. 为每个属性设置get方法,注意奥特曼所有属性都需要

  2. 初始化(利用构造函数完成初始化),参数是等级,等级与其他属性的关系:生命是等级10倍,攻击是等级3倍,金钱是等级的10倍,经验开始为0。

  3. 逃跑(escape),当生命不超过10点时,奥特曼将逃跑,逃跑将损失所有金钱,战斗结果为奥特曼失败(lose)

  4. 攻击(attack),(这个方法要参数么??),当攻击怪兽时,怪兽受到的伤害等于奥特曼攻击力。(本方法实际上就是怪兽被攻击,所以不一定需要实现)

  5. 被攻击(attacked),(这个方法要参数么??),当怪兽反击时,奥特曼受到的伤害等于怪兽攻击力的一半,即生命损失=怪兽攻击力值/2,取整处理

  6. 回复生命(restore),如果体力不支(生命低于50%但大于10点),每10个金钱可恢复1点生命值。只要有足够的钱,可以一直恢复,直到达到生命值上限(等级的10倍)。

  7. 胜利(win),(这个方法要参数么??),当怪兽生命小于等于0,战斗结果为奥特曼胜利(win),奥特曼将获得怪兽身上所有金钱和经验值。

  8. 升级(upgrade),战斗结束后,达到升级条件可以升级,条件是经验值不小于等级10倍。升级将扣除相应的经验值,生命满血,更新生命上限和攻击力。

  9. 显示状态(display),单行输出,格式如下:

    rank=等级 hp=生命 damage=攻击 exp=经验 money=金钱

怪兽说明如下:

  1. 为每个属性设置get方法。

  2. 初始化(利用构造函数完成初始化),参数是等级,等级与其他属性的关系:生命是等级20倍,攻击是等级2倍,金钱是等级的10倍,经验值是等级的10倍。

  3. 被攻击(attacked),(这个方法要参数么??),当奥特曼攻击时,怪兽受到的伤害等于奥特曼攻击力,即生命损失=奥特曼攻击力值

  4. 反击(fightback)当怪兽被反击后,如果怪兽不死,将进行反击(本方法实际上就是奥特曼被攻击,所以不一定需要实现)

  5. 显示状态(display),单行输出,格式如下:

    rank=等级 hp=生命 damage=攻击 exp=经验 money=金钱


请在main函数中实现奥特曼与怪兽的“只抽”,即1对1的战斗过程,具体步骤如下:

cin>>t; //表示有t个测试实例

while (t–) //每个实例就是奥特曼与怪兽的1对1战斗

{

  1. 输入奥特曼和怪兽的等级,并调用初始化方法进行对象初始化

  2. 输出奥特曼和怪兽状态,调用display方法,每行输出一个

  3. 设置战斗标志flag为true,启动战斗循环,具体如下:

while(flag) //当战斗未结束就继续

{ //奥特曼攻击1次,或者是怪兽被攻击1次

   if (怪兽没死)  //用怪兽生命来判断,用get方法啦{     //怪兽反击1次,或者是奥特曼被攻击1次if (奥特曼不必逃跑)           //用奥特曼生命来判断,用get方法啦//奥特曼回血,在方法中判断是否需要加血else{     //奥特曼逃跑,并输出"lose"并回车//输出奥特曼状态,调用display方法//设置flag为false,停止战斗}}else //怪兽死了{     //奥特曼胜利,并输出"win"并回车//输出奥特曼状态,调用display方法//设置flag为false,停止战斗}

}

}

输入
第一行先输入t表示有t个测试实例

接着t行输入奥特曼和怪兽的等级

输出
根据题目要求,每个实例输出4行结果:

头两行是奥特曼和怪兽的初始状态

第3行是战斗结果

第4行是奥特曼的最终状态

样例输入
2 5 5 5 10
样例输出
rank=5 hp=50 damage=15 exp=0 money=50
rank=5 hp=100 damage=10 exp=50 money=50
win
rank=6 hp=60 damage=18 exp=0 money=50
rank=5 hp=50 damage=15 exp=0 money=50
rank=10 hp=200 damage=20 exp=100 money=100
lose
rank=5 hp=5 damage=15 exp=0 money=0

#include<iostream>
#include <cstring>
using namespace std;
class Ultraman{private:int rank; // 等级 int hp;      //生命值 int damage;   //攻击力 int exp;  //经验    int money;  //钱 public:Ultraman(int);void display();    //展示实力 void escape();   //逃跑 void attacked(int);    //被攻击 void restore();   //补血 void win(int,int);     //胜利 void upgrade();     //升级int get_rank();int get_hp();int get_damage();int get_exp();int get_money();
};
class Monster{private:int rank; // 等级 int hp;       //生命值 int damage;   //攻击力 int exp;  //经验    int money;  //钱 public:Monster(int);void attacked(int); //被攻击 int get_rank();int get_hp();int get_damage();int get_exp();int get_money();void display();
};
Ultraman::Ultraman(int a){rank=a;hp=10*a;exp=0;damage=3*a;money=10*a;
}
int Ultraman::get_rank(){return rank;
}
int Ultraman::get_hp(){return hp;
}
int Ultraman::get_damage(){return damage;
}
int Ultraman::get_exp(){return  exp;
}
int Ultraman::get_money(){return money;
}
//当生命不超过10点时,奥特曼将逃跑,逃跑将损失所有金钱
void Ultraman::escape(){ money=0;cout<<"lose"<<endl;
}
void Ultraman::win(int _exp,int _money){cout<<"win"<<endl;exp+=_exp;money+=_money; upgrade();
}
void Ultraman::attacked(int monster_damage){hp-=monster_damage/2;
}
void Ultraman::upgrade(){while(exp>=10*rank){exp-=10*rank;rank++;hp=rank*10;damage=rank*3;}
}
void Ultraman::restore(){while(hp<5*rank&&money>=10){hp++;money-=10;}
}
void Ultraman::display(){cout<<"rank="<<rank;cout<<" hp="<<hp;cout<<" damage="<<damage;cout<<" exp="<<exp;cout<<" money="<<money<<endl;
}Monster::Monster(int a){rank=a;hp=20*a;damage=a*2;money=10*a;exp=a*10;
}
int Monster::get_rank(){return rank;
}
int Monster::get_hp(){return hp;
}
int Monster::get_damage(){return damage;
}
int Monster::get_exp(){return   exp;
}
int Monster::get_money(){return money;
}
void Monster::attacked(int ultraman_damage){hp-=ultraman_damage;
}
void Monster::display(){cout<<"rank="<<rank;cout<<" hp="<<hp;cout<<" damage="<<damage;cout<<" exp="<<exp;cout<<" money="<<money<<endl;
}int main()
{int lev,t,flag;cin>>t;while(t--){flag=true;cin>>lev;Ultraman Tiga(lev);   //迪迦奥特曼 cin>>lev;Monster  Viga(lev); //维迦怪兽 Tiga.display();Viga.display();while(flag){Viga.attacked(Tiga.get_damage());if(Viga.get_hp()>0){Tiga.attacked(Viga.get_damage());if(Tiga.get_hp()>10){if(Tiga.get_hp()<Tiga.get_rank()*5){Tiga.restore();}    }else{Tiga.escape();Tiga.display();flag=false; }}else{Tiga.win(Viga.get_exp(),Viga.get_money()); Tiga.display();flag=false; }}}return 0;
}

C++ 奥特曼打怪兽之类的实现(系列2)相关推荐

  1. C++ 奥特曼打怪兽之多态(系列5)

    题目描述 重新组织和修改前面"类的继承"的代码,利用多态实现以下内容,使得下面的main函数能正确执行并输出相关信息. 对怪兽类进行了扩充和修改: Monster类: 1.添加lo ...

  2. 用Python做一个奥特曼打怪兽的小游戏

    话不多说,往下看吧! 引入需要的模块 from sprites import * from pygame import mixer 设置页面格式(宽高等等) width,height = 800,60 ...

  3. Python奥特曼打怪兽射击游戏(基于海龟画图创作的作品,来自Python创意编程100例sprites篇_Python精灵模块)

    相信这竟然是Python用海龟画图制作的作品吗? sprites模块就是用python的turtle模块开发的!所以本作品仍属于Python海龟画图作品 """奥特曼打怪 ...

  4. Java练习之奥特曼打怪兽(回合制)

    Java练习 1.整体要求 奥特曼打怪兽,奥特曼有名字.攻击力.血量等属性,有技能:飞行.光线攻击: 怪兽有名字.攻击力和血量属性,有技能:奔跑.蛮力攻击. 创建奥特曼和怪兽对象,然后调用他们的属性和 ...

  5. Python奥特曼打怪兽射击游戏,基于海龟画图创作的作品

    相信这竟然是Python用海龟画图制作的作品吗? sprites模块就是用python的turtle模块开发的!所以本作品仍属于Python海龟画图作品 """奥特曼打怪 ...

  6. Python新手经典案例之奥特曼打怪兽-lol版

    本人新人入门Python 老师布置的作业打怪兽,本人参考了大佬们的杰作然后完成了下方的适合新手入门的版本,与大家分享! 第一步:新建Python包,创建文件 注意:需要有_init_.py这个py文件 ...

  7. C++ 奥特曼打怪兽之类的应用(系列3)

    题目描述 在前面实验的基础上,根据题目要求进行修改,实现打斗过程. 怪兽分为四种类型(定义四个类): 普通型怪兽(NMonster):攻击力是等级2倍,生命是10倍,金钱经验是10倍 攻击型怪兽(AM ...

  8. C++奥特曼打怪兽系列

    题目描述 在前面实验的基础上,根据题目要求进行修改,实现打斗过程. 怪兽分为四种类型(定义四个类): 普通型怪兽(NMonster):攻击力是等级2倍,生命是10倍,金钱经验是10倍 攻击型怪兽(AM ...

  9. python笔试题奥特曼打怪兽_python文字小游戏——奥特曼大战小怪兽

    历时三天,辛辛苦苦,废寝忘食,呕心沥血之作!!! 这是一个我根据自己的想法做出来的一个模拟以前文字游戏的小游戏 里面的主要实现是:玩家通过控制台输入键盘指令来进行操作,存取档,输游戏名,地图移动并随机 ...

最新文章

  1. Eclipse RCP 中将窗口始终保持在最前
  2. 【LeetCode从零单排】No198.House Robber No91.Decode Ways139 word break(动态规划典型应用)
  3. RESTful Web 服务 - 寻址
  4. 【杂谈】如果你想快速系统掌握计算机视觉大部分领域,学习人脸图像是唯一选择...
  5. 火爆 GitHub 的 16 张机器学习速查表,值得收藏!
  6. mamp安装php扩展,向MAMP添加GMP PHP扩展
  7. python趣味编程100例-Python趣味编程与精彩实例,码高少儿编程 编
  8. Oracle 导出DMP
  9. .java和.class的区别_Java中class与Class有什么区别
  10. PyCharm自定义背景图片、更换主题
  11. 【053】ImageDataGenerator() 介绍
  12. YY直播产品体验报告
  13. SGE集群主机和执行机的正确卸载
  14. linux服务器新装hba卡,EmulexHBA卡在Linux下的安装方法
  15. win10ftp服务器上传文件时提示报错,win10 ftp服务器 无权限问题
  16. 2019计算机电源海关征税,回国华人注意!2019中国海关严打:这些东西千万别带了!...
  17. 计算机基础是不是java_计算机基础与java
  18. python天天向上续。尽管每天坚持,但人的能力发展并不是无限的,它符合特定模型。实例1的修改。改造实例代码1.1。回文数。
  19. opencv学习笔记五十三:训练自己的级联分类器
  20. sudo apt-get update时W: GPG 错误:http://packages.osrfoundation.org/gazebo/ubuntu-stable xenial InReleas

热门文章

  1. 实例:Qt | 百度语音识别
  2. 语音识别中的CE准则和MMI准则——内含详细参数更新过程
  3. java 开发web页面跳转,javaweb页面跳转
  4. iPhone被阉割。
  5. 如何实现在线客服系统(java+netty+hazelcast+electron+vue)
  6. 服务器解压msi文件,MSI安装包
  7. [转]Java常用工具类集合
  8. 程序员如何正确的提问?
  9. Linux下安装QQ2012
  10. Swin trasnformer 学习笔记