面向对象练习坦克大兵游戏

游戏玩家(名称,生命值,等级),坦克,大兵类,玩家之间可以相互攻击,大兵拥有武器,用枪弹和反坦克炮弹,造成攻击不同,坦克攻击值固定,请设计玩家互相攻击的过程,实现坦克A大兵,大兵打坦克,大兵用枪打坦克,大兵用反坦克导弹打坦克。

大兵被坦克攻击了,从200到0
坦克被反坦克炮弹攻击了,从1000到500
坦克被手枪攻击了,从500到400

在这里插入图片描述

package com;public class Tank extends Player{public Tank() {this.setName("坦克");this.setBlood(1000);this.setAtackvalue(200);}}
package com;public class Soldier extends Player {private Weapon wp;public Soldier() {this.setName("大兵");this.setAtackvalue(20);this.setBlood(200);}public void setWeapon(Weapon wp ) {this.wp=wp;}public void fire(Player target) {if(wp==null) {int blood0,blood;blood0=target.getBlood();blood=blood0-this.getAtackvalue();target.setBlood(blood);System.out.println(target.getName()+"被"+this.getName()+"攻击了,从"+blood0+"到"+target.getBlood());}else {			wp.fire(target);}}}
package com;public class Player {private String name; // 名称private int blood ; // 生命值private int level; // 等级默认为1,所有输出值为等级x数值private int atackvalue;  //攻击值public int getAtackvalue() {return atackvalue;}public void setAtackvalue(int atackvalue) {this.atackvalue = atackvalue;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getBlood() {return blood;}public void setBlood(int blood) {this.blood = blood;}public int getLevel() {return level;}public void setLevel(int level) {this.level = level;}public void fire(Player target) {int blood,blood0;blood0=target.getBlood();blood =blood0 - this.getAtackvalue();target.setBlood(blood);System.out.println(target.getName()+"被"+this.getName()+"攻击了,从"+blood0+"到"+target.getBlood());}}
package com;public  class Weapon {private String name ; //武器名称private  int atackvalue;  //攻击值public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAtackvalue() {return atackvalue;}public void setAtackvalue(int atackvalue) {this.atackvalue = atackvalue;}public void fire(Player target) {int blood0,blood;blood0=target.getBlood();blood =blood0  - this.getAtackvalue();target.setBlood(blood);System.out.println(target.getName()+"被"+this.getName()+"攻击了,从"+blood0+"到"+target.getBlood());}}
package com;public class Bullet extends Weapon {public Bullet() {this.setAtackvalue(100);this.setName("手枪");}}
package com;public class Shell extends Weapon {public Shell() {this.setAtackvalue(500);this.setName("反坦克炮弹");}}
package com;public class Test {public static void main(String[] args) {Tank tk=new Tank();Soldier s=new Soldier();tk.fire(s);Soldier s2=new Soldier();Shell shell=new Shell();s2.setWeapon(shell);s2.fire(tk);Bullet bl=new Bullet();s2.setWeapon(bl);s2.fire(tk);}}

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

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

相关文章

设计模式-六大原则

设计模式的六大原则是软件工程中的基本概念,使得构建可维护、可扩展和可重用的代码。 1.单一职责原则(Single Responsibility Principle):一个类或方法应该只有一个引起变化的原因,确保类或模块的功能高度内聚。 案例&…

VMware-Linux切换桥接模式上网教程(超详细)

这里写目录标题 1. 虚拟机关机2. VMware 虚拟网络配置2.1 检查是否存在 VMnet02.2 修改桥接模式2.3 修改Linux虚拟机网络适配器 3. Linux 系统配置3.1 修改系统网卡配置3.1.1 配置项含义解释3.1.2 查看物理机网络信息3.3.3 修改配置 3.2 重启服务 4. 测试网络连接情况5. 注意事…

如何看待AIGC技术?

AIGC原名(Artificial Intelligence Generated Content) 技术是一种利用人工智能来自动生成内容的技术,这包括文本、图像、音频和视频等多种形式的创作。AIGC技术的发展标志着人工智能从1.0时代进入2.0时代的重大转变,它不仅体现了…

多线程优化人脸识别时遇到的问题

项目: face 遇到的问题: 其中一个线程报错,然后不返回相应的数据信息 问题思考: 每个线程独立执行,当其中一个线程报错后,随之这个线程不往下执行,但是其他线程还是正确执行的。 解决&…

【SpringBoot整合系列】SpringBoot整合JPA

目录 前期回顾ORM解决方案 JPA简介JPA的组成技术ORM映射元数据Java持久化API查询语言(JPQL) JPA的优势JPA的缺点 Spring Data JPASpring Data JPA简介Spring Data 家族Spring Data JPA、JPA和其他框架之间的关系 SpringBoot整合JPAJPA的核心注解1.依赖2.…

element-ui upload 组件 手动多次出发 submit

element 上传组件 upload 上传成功以后,想重新 调用 submit()函数,发现是不可以进行多次触发的,。 直接上解决方法,在上传成功后的钩子函数里添加:fileList[0l.status ready fileList是文件列表,status是单文件的状态改成ready就…

【Fastadmin】表格导出excel,图片显示太大

目录 1.直接导出示例 2.解决办法 3. 再次导出效果 1.直接导出示例 图片过大,格式错乱 2.解决办法 在js页面加入代码 // 导出图片过大处理 exportOptions: {ignoreColumn: [0, operate],onBeforeSaveToFile: function (data, fileName, type, charset, encoding,…

《深入Linux设备驱动程序内核机制》学习笔记-第4章

前言 本文是《深入Linux设备驱动程序内核机制》的读书笔记,本文因为是读书笔记所以抄写引用了该书中的大量内容,写读书笔记的目的是在写作的过程中加深对书中内容的理解。 建议读者直接阅读《深入Linux设备驱动程序内核机制》,这本书是Linu…

代码随想录三刷day47

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、力扣115. 不同的子序列二、力扣583. 两个字符串的删除操作三、力扣72. 编辑距离 前言 本周我们讲了动态规划之终极绝杀:编辑距离,为…

阿里云服务器部署wordpress站点

步骤如下: 安装宝塔登录宝塔,安装wordpress环境新建站点,新建的时候只输入ip地址就可以,再创建一个数据库dev1在站点文件夹中传入wordpress,更改站点的配置文件,将工作目录xxx改成xxx/wordpress修改wordpr…

浅谈 操作系统

文章目录 一、什么是操作系统1.1、对下,要管理各种硬件设备1.2、对上,要给各种软件提供一个稳定的运行环境 二、常见的操作系统有哪些 一、什么是操作系统 操作系统 其实就是一个 软件(software)。是一个用来进行 管理 的软件。进行什么样的管理呢&…

mPEG-Dansyl,Methoxy PEG Dansyl由甲氧基-聚乙二醇(mPEG)和丹磺酰氯(Dansyl)两部分组成

【试剂详情】 英文名称 mPEG-Dansyl,Methoxy PEG Dansyl 中文名称 聚乙二醇单甲醚丹磺酸酯,甲氧基-聚乙二醇-丹磺酰胺 外观性状 由分子量决定,液体或者固体 分子量 0.4k,0.6k,1k,2k,3.4k…

OceanBase v4.2 特性解析:Auto DOP

我们常会使用并行执行来缩短查询时间,以满足业务对加速查询的需求。那么,如何确定合适的并行资源量呢?在优化器中,并行资源量可以通过并行度(DOP:Degree of Parallelism)这来衡量。在实际业务场…

前端发送请求,显示超时取消

前端发送请求,显示超时取消 问题说明:后台接口请求60s尚未完成,前端控制台显示取消(canceled) 原因 1、前端设置60s超时则取消 2、后台接口响应时间过长,过长的原因统计的数据量多(实际也才17…

react项目,文件夹和组件命名,有什么好的规范

在React项目中,文件夹和组件的命名规范对于保持代码的可读性和可维护性至关重要。以下是一些建议的规范: 文件夹命名规范 1、使用小写字母: 所有文件夹名称都应使用小写字母,避免使用大写字母或特殊字符。 2、使用短而描述性的…

LLM 安全 | 大语言模型应用安全入门

一、背景 2023年以来,LLM 变成了相当炙手可热的话题,以 ChatGPT 为代表的 LLM 的出现,让人们看到了无限的可能性。ChatGPT能写作,能翻译,能创作诗歌和故事,甚至能一定程度上做一些高度专业化的工作&#x…

BUUCTF-Misc20

[ACTF新生赛2020]NTFS数据流1 1.打开附件 是一堆文件,随便打开一个内容是flag不在这 2.pyton脚本 编写查找文件夹下一堆文件中那个文件藏有flag的Python脚本 import os def search_flag_files(folder_path, flag): flag_files [] for root, dirs, files …

HAL STM32 SSI/SPI方式读取MT6701磁编码器获取角度例程

HAL STM32 SSI/SPI方式读取MT6701磁编码器获取角度例程 📍相关篇《HAL STM32 I2C方式读取MT6701磁编码器获取角度例程》📌当前最新MT6701数据手册:https://www.magntek.com.cn/upload/MT6701_Rev.1.8.pdf📜SSI协议读角度&#xff…

【stomp实战】搭建一套websocket推送平台

前面几个小节我们已经学习了stomp协议,了解了stomp客户端的用法,并且搭建了一个小的后台demo,前端页面通过html页面与后端服务建立WebSocket连接。发送消息给后端服务。后端服务将消息内容原样送回。通过这个demo我们学习了前端stomp客户端的…

剑指 Offer 03.:数组中重复的数字

剑指 Offer 03. 数组中重复的数字 找出数组中重复的数字。 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。…