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

题目描述
在前面实验的基础上,根据题目要求进行修改,实现打斗过程。

  1. 怪兽分为四种类型(定义四个类):

普通型怪兽(NMonster):攻击力是等级2倍,生命是10倍,金钱经验是10倍

攻击型怪兽(AMonster):攻击力是等级4倍,生命是5倍,金钱经验是10倍

防御型怪兽(DMonster):攻击力是等级1倍,生命是20倍,金钱经验是10倍

肉鸡型怪兽(SMonster):攻击力是等级1倍,生命是10倍,金钱经验是20倍

  1. 定义一个守护神类(Angel),该类定义怪兽或奥特曼的守护神,为怪兽或奥特曼提供帮助。守护神等级为所守护对象的等级(例如守护神a1守护等级为3的攻击型怪兽am1,则a1的等级也为3),攻击是等级的一半,无生命。怪兽的守护神金钱和经验都为等级的5倍。奥特曼的守护神金钱和经验为0,等级随守护对象升级而升级。

  2. 为四个怪兽类和奥特曼类添加守护神对象成员,使它们都成为复合类。

  3. 当奥特曼战胜怪兽后,将获得怪兽及其守护神的经验金钱。

  4. 修改奥特曼类和怪兽类相关成员函数,实现守护神类与它们的关系,具体如下:

奥特曼,守护神为它攻击攻击型怪兽时,加1点攻击力,而在它攻击防御型怪兽时,加2点攻击力,在获得肉鸡型怪兽的金钱和经验时,翻倍(获得怪兽的经验和金钱翻倍)。

普通型怪兽和肉鸡型怪兽,无守护神。

攻击型怪兽,守护神为它在攻击奥特曼时,也打一次,使奥特曼除了受到怪兽攻击,还将将受到守护神攻击力的伤害。

防御型怪兽,守护神为它受到奥特曼攻击时,将生命损失减半。


outman(奥特曼类对象)这个热血骚年总是叫嚷“一个打十个”,叫的老天爷都不耐烦了。这次outman傻眼了,是一个打4个。现在让我们来为outman欢呼吧,围观吧(记得带上板凳瓜子和鸡蛋,不好看的话就扔扔)。

请在main函数中实现如下架构

while (t--)  //每个实例就是奥特曼与个怪兽的战斗{//输入奥特曼等级值,利用等级值,声明一个奥特曼对象并初始化。//输出奥特曼状态,调用display方法,每行输出一个//输入个怪兽的等级,依次为普通型怪兽、肉鸡型怪兽、防御型怪兽、攻击型怪兽,保存在数组mgrad[4]中//创建种类型怪兽对象并利用等级值mgrad初始化。//输出每个怪兽的状态,调用display方法,每行输出一个//设置战斗标志flag为true,与每个怪兽的战斗结果winflag1=0,winflag2=0,winflag3=0,winflag4=0。//启动战斗循环,具体如下:while(flag) //4个怪兽群殴奥特曼{  //奥特曼攻击每个怪兽1次if (如果怪兽i没死)  //如果怪兽i没死,怪兽i攻击奥特曼,注意:只要没死的怪兽,都攻击奥特曼次。{  //怪兽i反击1次if (奥特曼不逃跑)     //如果奥特曼不逃跑,用奥特曼生命来判断//奥特曼回血,在方法中判断是否需要加血else{   //奥特曼逃跑,设置逃跑标志eflag为true,并输出"lose"并回车//输出奥特曼状态,调用display方法                           //设置flag为false,停止战斗}}else if(怪兽是这一轮死的)//如果怪兽这一轮死了{  //奥特曼胜利,并输出"win"并回车//奥特曼升级//输出奥特曼状态,调用display方法//设置打赢标记winflagi为true}if(所有怪兽都死了){//所有怪兽都死了,用个打赢标记判断//结束战斗,设置flag为false,并输出“win all”}}//end of while flag

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

对于每个测试实例,首行先输入奥特曼等级

接着4行依次输入普通型、肉鸡型、防御型、攻击型怪兽的等级

输出
输出奥特曼和每个怪兽的战斗结果,具体要求参考程序框架

样例输入
2 5 3 3 3 3 5 10 10 10 10
样例输出
rank=5 hp=50 damage=15 exp=0 money=50
rank=3 hp=30 damage=6 exp=30 money=30
rank=3 hp=30 damage=3 exp=60 money=60
rank=3 hp=60 damage=3 exp=30 money=30
rank=3 hp=15 damage=12 exp=30 money=30
win
rank=5 hp=45 damage=15 exp=45 money=95
win
rank=6 hp=60 damage=18 exp=25 money=125
win
rank=8 hp=80 damage=24 exp=15 money=245
win
rank=8 hp=76 damage=24 exp=60 money=290
win all
rank=5 hp=50 damage=15 exp=0 money=50
rank=10 hp=100 damage=20 exp=100 money=100
rank=10 hp=100 damage=10 exp=200 money=200
rank=10 hp=200 damage=10 exp=100 money=100
rank=10 hp=50 damage=40 exp=100 money=100
lose
rank=5 hp=8 damage=15 exp=0 money=0

#include<iostream>
#include <cstring>
using namespace std;
class Angel {private:int rank; // 等级int damage;	//攻击力int exp;	//经验int money;	//钱public:Angel(int,int,int);
};
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 {protected:int rank; // 等级int hp;	 	//生命值int damage;	//攻击力int exp;	//经验int money;	//钱public:void attacked(int);	//被攻击int get_rank();int get_hp();int get_damage();int get_exp();int get_money();void display();
};
class NMonster:public Monster {public:NMonster(int);};
class AMonster:public Monster {private:Angel A_Angel;public:AMonster(int);
};
class DMonster:public Monster {private:Angel D_Angel;public:DMonster(int);
};
class SMonster:public Monster {public:SMonster(int);
};
Angel::Angel(int a,int m=0,int e=0) {rank=a;damage=a/2;exp=e;money=m;
}
NMonster::NMonster(int a) {rank=a;damage=2*a;hp=a*10;exp=a*10;money=10*a;
}
AMonster::AMonster(int a):A_Angel(a,a*5,a*5) {rank=a;damage=4*a;hp=a*5;exp=a*10;money=10*a;
}
DMonster::DMonster(int a):D_Angel(a,a*5,a*5) {rank=a;damage=1*a;hp=a*20;exp=a*10;money=10*a;
}
SMonster::SMonster(int a) {rank=a;damage=1*a;hp=a*10;exp=a*20;money=20*a;
}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;
}
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,mgrad[4];bool flag,winflag1,winflag2,winflag3,winflag4;int i=0,j=0,k=0,l=0; 	//判断怪兽是否本回合死亡cin>>t;while(t--) {cin>>lev;Ultraman Tiga(lev);Tiga.display();for(int x=0; x<4; x++) {cin>>mgrad[x];}NMonster n1(mgrad[0]);SMonster rookie(mgrad[1]);DMonster d1(mgrad[2]);AMonster a1(mgrad[3]);n1.display();rookie.display();d1.display();a1.display();flag=1;winflag1=0;winflag2=0;winflag3=0;winflag4=0;while(flag) {n1.attacked(Tiga.get_damage());rookie.attacked(Tiga.get_damage());d1.attacked((Tiga.get_damage()+2)/2); //守护神为它攻击攻击型怪兽时,加1点攻击力a1.attacked(Tiga.get_damage()+1);	//攻击防御型怪兽时,加2点攻击力,但防御型怪兽,守护神为它受到奥特曼攻击时,将生命损失减半。if(n1.get_hp()>0) {			//与普通怪兽的战斗 Tiga.attacked(n1.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 if(i==0) {Tiga.win(n1.get_exp(),n1.get_money());		Tiga.display();i=1;		//让下一次循环不会重复获得这只怪兽的经验和金币winflag1=1;}if(rookie.get_hp()>0) {			//与肉鸡怪兽战斗 Tiga.attacked(rookie.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 if(j==0) {Tiga.win(rookie.get_exp()*2,rookie.get_money()*2); //双倍金币经验 Tiga.display();j=1;		//让下一次循环不会重复获得这只怪兽的经验和金币winflag2=1;}if(d1.get_hp()>0) {			//与防御怪兽战斗 Tiga.attacked(d1.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 if(k==0) {Tiga.win(d1.get_exp()+d1.get_rank()*5,d1.get_money()+d1.get_rank()*5);//奥特曼还会获得怪兽守护神的exp和money Tiga.display();k=1;		//让下一次循环不会重复获得这只怪兽的经验和金币winflag3=1;}if(a1.get_hp()>0) {			//与攻击怪兽战斗 Tiga.attacked((a1.get_damage()+a1.get_rank()/2));  // 奥特曼除了受到怪兽攻击,还将将受到攻击性怪兽的守护神攻击力的伤害。if(Tiga.get_hp()>10) {if(Tiga.get_hp()<Tiga.get_rank()*5) {Tiga.restore();}} else {Tiga.escape();Tiga.display();flag=false;}} else if(l==0) {Tiga.win(a1.get_exp()+a1.get_rank()*5,a1.get_money()+a1.get_rank()*5);  //奥特曼还会获得怪兽守护神的exp和money Tiga.display();l=1;		//让下一次循环不会重复获得这只怪兽的经验和金币winflag4=1;}if(winflag1&&winflag2&&winflag3&&winflag4) {flag=false;cout<<"win all"<<endl;}}}
}

夹带私活
shout out to Rookie
把般配打在公屏上
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/21298.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

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

话不多说&#xff0c;往下看吧&#xff01; 引入需要的模块 from sprites import * from pygame import mixer设置页面格式&#xff08;宽高等等&#xff09; width,height 800,600 screen Screen() screen.setup(width,height) screen.bgcolor(black) screen.title(奥特曼…

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

题目描述 在实验《类定义》的基础&#xff0c;改进并实现游戏中的两个类&#xff1a;奥特曼类和怪兽类。使得两个类更加接近实际要求。 奥特曼说明如下&#xff1a; 为每个属性设置get方法&#xff0c;注意奥特曼所有属性都需要 初始化(利用构造函数完成初始化)&#xff0c;参…

用C语言画一个Q版奥特曼

有一天原本平静的村庄突然受到不明寄生生命体的袭击&#xff01;“快逃&#xff01;”“可是……” 快找出怪兽玛格尼亚的弱点&#xff0c;欢迎收看迪迦奥特曼的下集大雾来了。 今天分享一个用C语言画Q版奥特曼的源码~ 用到的是easyx图形库绘图功能&#xff0c;所以需要下载安…

2023-热门ChatGPT解析及使用方法

什么是Chat GPT&#xff1f;我们能用它来干什么&#xff1f; Chat GPT是一款基于人工智能技术的自然语言处理模型&#xff0c;由OpenAI团队开发。它能够通过机器学习技术从海量文本数据中学习语言知识&#xff0c;实现自然语言生成、对话生成和语言理解等功能&#xff0c;使得…

何让ChatGPT自动生成内容,作为客户服务工作人员的回答话术?

该场景对应的关键词库&#xff08;13个&#xff09;&#xff1a; 产品知识、使用方法、售后服务、售后维修、支付方式、支付流程、产品购买、产品配送、客户投诉、客户建议、政策法规、使用注意事项、客服身份 提问模板&#xff1a; 1、客服团队一般需要回答几个方面的问题&…

2023爱分析 · 元宇宙厂商全景报告 | 爱分析报告

报告编委 黄勇 爱分析合伙人&首席分析师 文鸿伟 爱分析高级分析师 目录 1. 研究范围定义 2. 市场洞察 3. 厂商全景地图 4. 市场分析与厂商评估 5. 入选厂商列表 1. 研究范围定义 研究范围 2021年3月&#xff0c;十四五规划中首次提及元宇宙&#xff0c;指…

字节跳动 CEO 梁汝波发内部信:头条、西瓜、搜索等业务并入抖音

2021 年 11 月 2 日&#xff0c;字节跳动 CEO 梁汝波发布一则内部信&#xff0c;重磅宣布根据业务需要进行的组织结构优化和升级举措&#xff0c;以抖音、教育、飞书、火山引擎、朝夕光年、TikTok 六大业务板块为依托&#xff0c;遵循“紧密配合的业务和团队合并为业务板块&…

【报告分享】ChatGPT:AI模型框架研究.pdf(附下载链接)

省时查报告-专业、及时、全面的行研报告库 省时查方案-专业、及时、全面的营销策划方案库 【免费下载】2023年2月份热门报告合集 【限时免费】ChatGPT4体验&#xff0c;无需翻墙直接用 ChatGPT团队背景研究报告 ChatGPT的发展历程、原理、技术架构及未来方向 ChatGPT使用总结&a…

ChatGPT 用redis实现分布式锁

背景 打算基于springboot、RedisTemplate&#xff0c;由ChatGPT来实现分布式锁&#xff0c;记录全过程。 基础介绍 基于RedisTemplate实现分布式锁 基于springboot及RedisTemplate实现分布式锁 在Spring Boot中&#xff0c;我们可以通过RedisTemplate来使用Redis的分布式锁机…

gpt人工智能写论文怎么样-chatGTP如何写论文

用gpt写论文怎么样 使用 GPT 写论文具体的操作方法因人而异&#xff0c;但可以提供一些建议&#xff1a; 充分理解论文的题目、主题和结构&#xff0c;并确定论文所需的内容和方向。 针对论文的不同部分&#xff0c;使用 GPT 模型进行自动化生成或补充&#xff0c;例如摘要、…

GPT-4 还没玩透,GPT-5已遭众人围剿

GPT-4 火爆全球&#xff0c;引发了人工智能大浪潮。OpenAI、微软、谷歌、百度都在不断释放王炸&#xff0c;所有人都相信&#xff0c;AI 的就是未来的生产力。 网友们在体验了性能炸裂的GPT-4之后&#xff0c;显然已经迫不及待地等着GPT-5的到来了。据报道 GPT-5 将于今年冬天…

人工智能开源系统,独立版本开发,国内服务器部署

Chatgpt是最近爆火的一个话题&#xff0c;可以通过人工智能&#xff0c;编辑生成自己想要的文案或者文章&#xff0c;但是由于防火墙的限制&#xff0c;国内无法直接访问&#xff0c;针对此问题我们开发出一套此功能的系统&#xff0c;。 源码下载&#xff1a;http://c.nxw.so/…

AIGPT中文版(人人都能使用的GPT工具)生活工作的好帮手。

AIGPT简介 AIGPT是一款非常强大的人工智能技术的语言处理工具软件&#xff0c;它具有 AI绘画 功能、AI写作、写论文、写代码、哲学探讨、创作等功能&#xff0c;可以说是生活和工作中的好帮手。 我们都知道使用ChatGPT是需要账号以及使用魔法的&#xff0c;其中的每一项对我们…

AIGPT中文版(无需魔法,直接使用)不愧是生活工作的好帮手。

AIGPT AIGPT是一款非常强大的人工智能技术的语言处理工具软件&#xff0c;它具有 AI绘画 功能、AI写作、写论文、写代码、哲学探讨、创作等功能&#xff0c;可以说是生活和工作中的好帮手。 我们都知道使用ChatGPT是需要账号以及使用魔法的&#xff0c;其中的每一项对我们初学…

AIGPT中文版(无需魔法,直接使用)安装使用教程

AIGPT是一款非常强大的人工智能技术的语言处理工具软件&#xff0c;它具有AI绘画功能、AI写作、写论文、写代码、哲学探讨、创作等功能&#xff0c;可以说是生活和工作中的好帮手。 我们都知道使用ChatGPT是需要账号以及使用魔法的&#xff0c;其中的每一项对我们初学者来说都是…

寻找新的 AI 应用程序和 ChatGPT 工具的前 5 个网站

人工智能 &#xff08;AI&#xff09; 改变了我们生活的方方面面&#xff0c;从提高生产力到彻底改变客户体验。随着人工智能的日益普及&#xff0c;对能够利用其潜力的可靠工具和服务的需求也在不断增长。幸运的是&#xff0c;有专门的平台可以作为宝贵的资源&#xff0c;指导…

图像分割领域的GPT-4.0,分割一切的AI算法:Segment Anything

一、图像分割领域的GPT-4.0 大家好,我是千与千寻,今天给大家介绍的AI算法可以称得上是图像分割领域的GPT-4.0,号称可以分割一切的AI图像分割算法——Segment Anything。 提到GPT-4.0模型,相信不必我多说,大家都不会陌生,最近实在是太火爆了,大家应该也都体验过ChatGPT那…

白泽AI:通过GPT镜像站有望打造令人兴奋的文字游戏体验

白泽AI是一个基于ChatGPT的镜像站&#xff0c;它有着巨大的潜力来通过GPT技术打造出令人兴奋的文字游戏功能。 借助GPT的强大生成能力&#xff0c;白泽AI可以创建一个虚拟世界&#xff0c;让玩家沉浸其中。这个文字游戏将提供一个广阔而自由的环境&#xff0c;在那里玩家可以探…

一定能看懂的:教你如何搭建自己的嘴臭AI,实现嘴臭GPT!包看包会!简单明了!

先看一下效果&#xff0c;我搭建了自己的GPT网页&#xff0c;可以指定角色&#xff0c;于是看到了之前new bing的效果&#xff1a; 首先在自己的python环境下安装依赖&#xff1a; pip install openai 在openai api官方查找到自己的openai api key 点击自己的头像&#xff0c…

「草柴」中国版ChatGPT AI:百度文心一言将开启第一批内测怎么申请获得内测邀请激活码?

2023年3月16日 14:00百度文心一言新闻发布会开始&#xff0c;在会议上百度创始人、董事长兼首席执行官李彦宏及百度首席技术官王海峰出席&#xff0c;并针对百度文心一言的使用场景与百度文心一言的技术架构进行了介绍。同时&#xff0c;百度文心一言开启内测&#xff0c;获得内…