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

news2025/1/12 1:52:45

游戏玩家(名称,生命值,等级),坦克,大兵类,玩家之间可以相互攻击,大兵拥有武器,用枪弹和反坦克炮弹,造成攻击不同,坦克攻击值固定,请设计玩家互相攻击的过程,实现坦克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.coloradmin.cn/o/1609620.html

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

相关文章

logisim 图解超前进位加法器原理解释

鄙人是视频作者,文件在视频简介的网盘链接。 找规律图解超前进位加法器与原理解释_哔哩哔哩_bilibili 一句话就是“把能导致进位到这个位置的情况全都穷举一遍。” 穷举情况看图中算式。 视频讲解比较啰嗦。

JavaFX--基础简介(1)

一、介绍 中文官网:JavaFX中文官方网站OpenJFX 是一个开源项目,用于桌面、移动端和嵌入式系统的下一代客户端应用程序平台。openjfx.cn是OpenJFX(JavaFX)的标准中文翻译网站,致力于方便开发者阅读官方文档和教程。https://openjfx.cn/ JavaFX 是一个开…

【一文配置好Python开发环境】Python创建虚拟环境,一键更换国内镜像源

一、使用Python自带的venv创建虚拟环境 首先,确保你的Python安装中包含了venv模块。你可以在命令行中运行以下命令来检查: python -m venv --help进入代码目录,创建一个新的虚拟环境。在命令行中运行以下命令: python -m venv …

Llama 3王者归来,可与GPT-4分庭抗礼,开源模型即将追上闭源模型了?

“有史以来最强大的开源大模型”Llama 3引爆AI圈,马斯克点赞,英伟达高级科学家Jim Fan直言,Llama 3将成为AI大模型发展历程的“分水岭”,AI顶尖专家吴恩达称Llama3是他收到的最好的礼物。 4月18日,AI圈再迎重磅消息&a…

ubuntu22.04下编译ffmpeg和ffplay

Ubuntu22.04 下编译安装 ffmpeg 和 ffplay 一、下载源码包 1.1 官方下载链接:Download FFmpeg 可以手动下载,也可以命令行下载: wget http://www.ffmpeg.org/releases/ffmpeg-7.0.tar.xz 1.2 下载完解压 tar -xvf ffmpeg-7.0.tar.xz…

X-314智能合约:金融创新的强大引擎

💥火爆到烫手的X-314智能合约🔥 X-314智能合约是基于以太坊区块链开发的,具有高度可定制性和灵活性。 ave开单独板块;详细资料已经准备好;对web3感兴趣的大佬货;多交流多指导🤝 ​X-314智能合…

新质生产力如何点燃乡村振兴之火?(2010-2022年)

数据来源:主要来源于《中国国统计年鉴》、《中国能源统计年鉴》、《中国农村统计年鉴》、《中国人口和就业统计年鉴》、《中国城乡建设统计年鉴》以及各省份统计年鉴。时间范围:2010-2022年数据范围:各省、市、自治区数据指标: 本…

web网站搭建实验

综合练习:请给openlab搭建web网站 网站需求: 1.基于域名www.openlab.com可以访问网站内容为 welcome to openlab!!! 2.给该公司创建三个子界面分别显示学生信息,教学资料 和缴费网站,基于,www.openlab.com/data网站…

贪吃蛇游戏源码(VS编译环境)

贪吃蛇游戏源码(VS编译环境) 🥕个人主页:开敲🍉 🔥所属专栏:C语言🍓 🌼文章目录🌼 1. Snake.h 头文件 2. Snake.c 源文件 3. Test.c 头文件 1. Snake.h 头…

云安全问题频发,我们能做什么

随着云计算技术的快速发展,云服务已广泛应用于各行各业,为企业提供了高效、灵活和可扩展的算力资源与服务。然而,向云迁移的最大挑战是需要改造企业现有的安全和网络架构,云安全作为保障云计算环境安全稳定运行的重要性愈加突显。…

[Java基础揉碎]泛型

目录 泛型的理解和好处 使用传统方法的问题分析 使用泛型 泛型介绍 泛型的语法 泛型的声明 泛型的注意事项和细节 自定义泛型类 ​编辑 自定义泛型接口 自定义泛型方法 泛型的继承和通配符 泛型的理解和好处 看一个需求 1)请编写程序,在ArrayList 中&a…

在IDEA中解决SSM项目修改图片不能回显问题

1.问题描述 图片成功上传之后,件夹中已经显示图片了,但是访问图片资源会出现404错误,再重新启动服务器之后,发现这个错误又消失了,图片又能正常显示,但是必须重启Tomcat才有效。 2.解决方法如下&#xff…

一台服务器同时启动两个版本jdk

之前Java项目都是1.8的jdk,在服务器部署正常使用,服务器配置环境变量jdk1.8版本。最近一次我用了jdk17版本,部署服务器后,遇见了jdk版本不一致报错 报错内容: 52指向jdk1.8,61指向jdk17,大概就是jdk版本不…

护眼台灯什么牌子好一点?专业做护眼灯的有哪些品牌?一文见分晓

护眼台灯什么牌子好一点?随着市场对护眼台灯需求的增加,一些质量低劣的产品也相继曝光,这让消费者们的担忧变得合情合理。选择一款合适的护眼台灯,不仅能够缓解眼睛疲劳,还能提升学习与工作的效率。那么现如今专业做护…

今日早报 每日精选15条新闻简报 每天一分钟 知晓天下事 4月20日,星期六

每天一分钟,知晓天下事! 2024年4月20日 星期六 农历三月十二 1、 证监会:调降基金股票交易佣金费率,年度降幅测算将达38%,7月1日起实施。 2、 民政部举办全国“乡村著名行动”培训班,助力乡村振兴。 3、…

顺序表的应用—多指针算法

题目一 对于上面的题&#xff0c;有以下的两种思路 思路一&#xff1a; 定义一个顺序表&#xff0c;然后遍历数组&#xff0c;如果数组里面的元素等于val的值&#xff0c;就让这个值等于0就行了&#xff0c;然后输出的时候输出不是0的就行了 代码实现1 #include<stdio.h…

vscode如何方便地添加todo和管理todo

如果想在vscode中更加方便的添加和管理TODO标签&#xff0c;比如添加高亮提醒和查看哪里有TODO标签等&#xff0c;就可以通过安装插件快速实现。 安装插件 VSCode关于TODO使用人数最多的插件是TODO Height和Todo Tree 按住 CtrlShiftX按键进入应用扩展商店&#xff0c;输入to…

数据分析案例-中国黄金股票市场的EDA与价格预测

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

conda新建环境报错An HTTP error occurred when trying to retrieve this URL.

conda新建环境报错如下 cat .condarc #将 .condarc文件中的内容删除&#xff0c;改成下面的内容 vi .condarc channels:- defaults show_channel_urls: true default_channels:- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main- https://mirrors.tuna.tsinghua.…

pdf如何盖电子骑缝章?

在PDF文档中盖电子骑缝章&#xff0c;通常涉及到以下几个步骤&#xff1a; 1. 准备骑缝章图像 创建或获取骑缝章图片&#xff1a;设计或扫描实体骑缝章&#xff0c;将其转化为清晰的电子图像&#xff0c;通常为PNG或JPEG格式&#xff0c;确保背景透明&#xff0c;以便叠加在P…