OOP双人决斗(多重继承)

题目描述

写一个Node2D基类,属性有位置location(string)

一个Body子类继承自Node2D,属性当前生命值health(int),防御力defense(int)

一个Weapon子类也继承自Node2D,属性有武器名w_name(string),伤害damage(int)

一个Player多继承自Body和Weapon,属性有名字name(string)。方法有attack,对目标造成伤害

在主函数创建两个Player,p1、p2,判断在p1首先开始攻击的情况下谁会获胜。

我们规定attack中,每次对目标生命力造成的伤害等于damage减去目标的defense。

输入

输入:地点location,玩家1的名字、生命值、防御力、武器名、武器伤害,玩家2的名字、生命值、防御力、武器名、武器伤害

输出

输出:获胜信息

----------------------------------------------

输入示例:

palace
p1 30 5 bow 30
p2 50 10 sword 20

输出示例:

p1 deal 20 damage to p2
p2 still have 30 health

p2 deal 15 damage to p1
p1 still have 15 health

p1 deal 20 damage to p2
p2 still have 10 health

p2 deal 15 damage to p1
p2 defeated p1 by sword in palace

AC代码

#include "bits/stdc++.h"
using namespace std;class Node2D
{
protected:string location;public:Node2D(string loc) : location(loc) {}
};class Body : virtual public Node2D
{
private:int health;int defense;public:Body(string loc, int h, int d) : Node2D(loc), health(h), defense(d) {}int getHealth() const { return health; }void setHealth(int h) { health = h; }int getDefense() const { return defense; }
};
class Weapon : virtual public Node2D
{
protected:string w_name;int damage;public:Weapon(string loc, string name, int dmg) : Node2D(loc), w_name(name), damage(dmg) {}
};class Player : public Body, public Weapon
{
private:string name;public:Player(string loc, string n, int h, int d, string wn, int dmg): Node2D(loc), Body(loc, h, d), Weapon(loc, wn, dmg), name(n) {}void attack(Player &target){int actual_damage = damage - target.getDefense();actual_damage = actual_damage > 0 ? actual_damage : 0;target.setHealth(target.getHealth() - actual_damage);cout << name << " deal " << actual_damage << " damage to " << target.name << endl;if (target.getHealth() > 0){cout << target.name << " still have " << target.getHealth() << " health" << endl;}else{cout << name << " defeated " << target.name << " by " << w_name << " in " << location << endl;}}
};int main()
{string location, p1_name, p1_weapon, p2_name, p2_weapon;int p1_health, p1_defense, p1_damage, p2_health, p2_defense, p2_damage;cin >> location;cin >> p1_name >> p1_health >> p1_defense >> p1_weapon >> p1_damage;cin >> p2_name >> p2_health >> p2_defense >> p2_weapon >> p2_damage;Player p1(location, p1_name, p1_health, p1_defense, p1_weapon, p1_damage);Player p2(location, p2_name, p2_health, p2_defense, p2_weapon, p2_damage);while (p1.getHealth() > 0 && p2.getHealth() > 0){p1.attack(p2);cout << endl;if (p2.getHealth() > 0){p2.attack(p1);cout << endl;}}return 0;
}

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

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

相关文章

Python MongoDB 基本操作

本文内容主要为使用Python 对Mongodb数据库的一些基本操作整理。 目录 安装类库 操作实例 引用类库 连接服务器 连接数据库 添加文档 添加单条 批量添加 查询文档 查询所有文档 查询部分文档 使用id查询 统计查询 排序 分页查询 更新文档 update_one方法 upd…

【Linux工具】yum软件包管理器与Vim编辑器的高效运用

目录 Linux 软件包管理器 YUM 什么是软件包 安装工具 rzsz 及注意事项 查看软件包 安装和卸载软件 安装软件 卸载软件 Linux 开发工具 编辑器 - Vim 使用 ​编辑 Vim 与 Vi 的区别 Vim 的基本概念 三种模式 Vim 的基本操作 操作尝试&#xff1a; Vim 命令集解释…

根据滚珠丝杆规格适配丝杆支撑座!

丝杆支撑座是机械设备中常见的支撑座装置&#xff0c;支撑着滚珠丝杆&#xff0c;起到稳定和支撑的作用&#xff0c;避免丝杆弯曲变形和震动&#xff0c;从而保证设备的稳定运行。那么&#xff0c;我们应该如何正确选择丝杆支撑座呢&#xff1f; 在选择丝杆支撑座时&#xff0c…

android studio 提示dev/kvm is not found怎么解决

检查你的 CPU 是否支持虚拟化&#xff1a; 在 BIOS/UEFI 设置中启用虚拟化技术&#xff08;如 Intel VT-x 或 AMD-V&#xff09;。 BIOS下启动虚拟技术步骤&#xff1a; 1、电脑关机状态下&#xff0c;按电源键开机&#xff1b; 2、点击电源键后&#xff0c;立马点击FnF2组…

MySQL Workbench 远程连接 MySQL Server

修改 MySQL Server 侦听地址 首先&#xff0c;MySQL Server 安装完成后&#xff0c;它的侦听地址是 127.0.0.1:3306。这个地址只能本机访问&#xff0c;远程是访问不了的。为了修改侦听地址&#xff0c;需要修改配置文件。MySQL配置文件的名称是 my.cnf&#xff0c;通常保存在…

【16.0】JavaScript对象

【16.0】JavaScript对象 【一】js对象概念 【特性】js中的对象时无序的属性集合【理解】我们可以把js里的对象想象成py中的字典&#xff0c;具有键值对&#xff0c;其实就是属性和属性值u&#xff0c;对象就是一个容器&#xff0c;里面属性的堆放肯定时无序的【玩法】对象的特…

美学心得(第二百六十三集) 罗国正

美学心得&#xff08;第二百六十三集&#xff09; 罗国正 &#xff08;2024年6月&#xff09; 徐念慈&#xff08;1974—1908&#xff09;&#xff0c;江苏常熟市人&#xff0c;是文学家、翻译家、教育家、出版家。二十岁时便精通英、日文字&#xff0c;二十一岁中秀才&#…

opencv 打开图片后,cv::mat存入共享内存的代码,实现消费者与生产者模型。XSI信号量和POSIX 信号量

文章目录 基于 sys 系统信号量(XSI信号量)常用api参考 基于 POSIX 信号量有名信号量常用 api 无名信号量常用 api 参考 实践-基于POSIX有名信号量生产者消费者模型任务说明同步关系互斥关系 设置一个互斥信号量&#xff0c;实现对共享内存的互斥访问设置两个信号量&#xff0c;…

铁路防鸟有哪些措施?铁路专用太阳能雷达驱鸟扇

铁路沿线的电杆、接触网支柱以及硬横梁等结构&#xff0c;因其牢固稳定以及无晃动的特点&#xff0c;成为了鸟儿们心仪的筑巢佳地&#xff0c;众多鸟类选择在此“安营扎寨”。而鸟巢中的树枝、草根和铁丝等杂物&#xff0c;极易引起铁路供电设备跳闸&#xff0c;导致短路停电&a…

微信小程序创建新项目,app.json主动设置配置

"window": {"navigationBarTextStyle": "black","navigationBarBackgroundColor": "#f5f5f5","navigationBarTitleText": "微信"},

【云岚到家】-day04-1-数据同步方案-Canal-MQ

【云岚到家】-day04-1-数据同步方案-Canal-MQ 1 服务搜索1.1 服务搜索技术方案1.1.1 需求分析1.1.2 技术方案1.1.2.1 使用Elasticsearch进行全文检索1.1.2.2 索引同步方案 1.1.3 CanalMQ1.1.3.1 MySQL主从数据同步1.1.3.2 Canal工作流程1.1.3.3 具体实现方案 1.2 MQ技术方案1.2…

【QT】

通信服务端实现 widget.h文件 #ifndef WIDGET_H #define WIDGET_H #include <QWidget> #include <QTcpServer>//服务器类 #include <QMessageBox>//消息 #include <QTcpServer> #include <QList> #include <QTcpSocket> QT_BEGIN_NAMESPAC…

apache poi excel export

apache poi excel export 水一篇 凑个数&#xff08;啊 水文章好羞耻啊&#xff01;请原谅我私密马赛&#xff01;&#xff09; 1 ExcelColumn Data Builder ToString NoArgsConstructor AllArgsConstructor public class ExcelColumn implements Serializable {Serialprivat…

我在高职教STM32——LCD液晶显示(2)

大家好&#xff0c;我是老耿&#xff0c;高职青椒一枚&#xff0c;一直从事单片机、嵌入式、物联网等课程的教学。对于高职的学生层次&#xff0c;同行应该都懂的&#xff0c;老师在课堂上教学几乎是没什么成就感的。正因如此&#xff0c;才有了借助 CSDN 平台寻求认同感和成就…

[GESP202306 三级] 春游

题目:原题点我 题目大意&#xff1a; 找 0 0 0到 N − 1 N-1 N−1哪个少了输出哪个&#xff0c;没少输出 N N N 解题思路&#xff1a; 建立一个bool类型变量flag&#xff0c;输入时直接将对应的数放到对应的位置上去&#xff0c;就免了排序&#xff1b; 接着判断&#xff1…

Linux源码学习笔记01-Linux内核源码结构

Linux内核特性 是一个类Unix操作系统&#xff0c;但不是简化的Unix&#xff1b;不仅继承了Unix的特征&#xff0c;还有其他特性。 Linux内核的组织形式&#xff1a;整体式的结构&#xff0c;方便每个领域的开发人员参与开发&#xff1b;Linux进程调度方式简单高效&#xff1a…

用智能插件(Fitten Code: Faster and Better AI Assistant)再次修改vue3 <script setup>留言板

<template><div><button class"openForm" click"openForm" v-if"!formVisible">编辑</button><button click"closeForm" v-if"formVisible">取消编辑</button><hr /><formv-i…

【权威发布】2024年环境科学、旅游与产业经济国际会议(ICESTIE 2024)

2024年环境科学、旅游与产业经济国际会议 2024 International Conference on Environmental Science, Tourism and Industrial Economics 会议简介 2024年环境科学、旅游与产业经济国际会议旨在汇聚全球该领域的专家学者&#xff0c;共同探讨环境科学与旅游产业的融合发展&…

SDK编译IO Domain电压选择

开源鸿蒙硬件方案领跑者 触觉智能 本文适用于在Purple Pi OH开发板进行分区镜像烧录。触觉智能的Purple Pi OH鸿蒙开源主板&#xff0c;是华为Laval官方社区主荐的一款鸿蒙开发主板。 该主板主要针对学生党&#xff0c;极客&#xff0c;工程师&#xff0c;极大降低了开源鸿蒙…

SpringBoot 多种优雅的线程池配置与使用(异步执行函数,反射机制,动态识别参数,有返回值)

想要明白生活你需要先经历它,而不是总在分析它。 —萨莉鲁尼 文章目录 前言一、@Async注解1. 概念2. 使用2.1 使用@EnableAsync启动函数异步支持2.2 不会异步执行的坑2.2.1 为什么内部调用不会异步执行?2.2.2 如何确保@Async方法异步执行?3. 配置线程池3.1 通过代码配置3.1.…