把这学期的Java作业整理了一下,有十几次实验作业吧,连续更新。


文章目录

  • 我把3个题合在一起做了
  • 1. 根据课堂上讲授的使用类的构造方法去给对象的属性赋值。
  • 2.this关键字的使用
  • 3.创建一个英雄类(Hero),该类拥有3个属性,名字(name)、血量(hp)、攻击力(att)、防御力(def)。


我把3个题合在一起做了

1. 根据课堂上讲授的使用类的构造方法去给对象的属性赋值。

  1. 创建一个英雄类(Hero),该类拥有4个属性,名字(name)、血量(hp)、攻击力(att)、防御力(def)。
  2. 给Hero类定义一个空的构造方法(注意构造方法的名字需与类名相同,且无返回值),参数为空,内容为空。
    3)给Hero类定义一个构造方法,参数为String a,方法的内容是将a的值赋予name。
    4)给Hero类定义一个构造方法,参数为String a、int b、int c、int d四个,方法的内容是将a的值赋予name。将b的值赋予hp,将c的值赋予att,将d的值赋予def。
    5)创建对象p1,参数为空
    6)创建对象p2,参数为英雄的名字(名字自己起)
    7)创建对象p3,参数为英雄的名字,血量,攻击力,防御力(名字及数值自己定)

2.this关键字的使用

将题目1中构造方法的参数,a改为name,b改为hp,c改为att,d改为def。并使用this关键字将参数中的name、hp、att、def的值分别赋予类中的成员变量(即英雄的属性) name、hp、att、def。

进阶题

3.创建一个英雄类(Hero),该类拥有3个属性,名字(name)、血量(hp)、攻击力(att)、防御力(def)。

  1. 创建两个英雄,给他们的属性赋值,名字自己起,第一个英雄血量100,攻击力50,防御力40,第二个英雄血量180,攻击力45,防御力42。(属性值也可自拟)
  2. 该类拥有一个方法,显示英雄信息(名字自拟也可以叫info),格式为:英雄姓名:xx,血量:xx,攻击力:xx,防御力:xx,请在main函数中分别调用两个英雄的该方法以显示两个英雄的相关属性信息(也可自拟)。
  3. 英雄类拥有攻击这个方法,该方法的作用是对对方英雄造成伤害(降低对方hp),伤害计算公式为:伤害=己方攻击力-对方防御力,即A英雄对B英雄的伤害=A英雄的攻击力-B英雄的防御力。很明显该方法的两个参数可以是攻击力和防御力,注意伤害最小为1。即不能为0也不能为负(注意在方法中添加相关的判断不能<1的条件)。
  4. 执行一次A英雄的攻击方法(即A对B做一次攻击),然后再显示结果格式为:A对B造成了XX点伤害,A的剩余血量为,B的剩余血量为XX(也可自拟)
    进阶题
  5. 跳过第五步,这时A与B开始1对1单挑(满血开始),战斗模式为回合制,A先出手,即A打B一次,B再打A一次,如此循环,通过代码实现显示战斗结果。格式为XX击杀了XX(也可自拟)
  6. 请在显示战斗结果的同时实现显示战斗过程,

增加内容
4) 该英雄类还拥有治疗这个方法(自己编写),该方法的作用是是给自己恢复血量,每次可恢复20点血(注意治疗时血量不能高于hp的最大值(即初始值))。
4)攻击方法每1回合可以使用一次,治疗方法每5回合才可以使用一次。
5)现在A与一对一pk,轮流释放技能(即方法),注意一回合内只能使用一种技能(即攻击了就不能治疗,治疗了就不能攻击),现约定,A可以攻击但不能使用治疗,B可以攻击也可以治疗。A先出手,请模拟战斗过程并输出胜负结果。
6)请计算出分出胜败时的总回合数。
注:最低血量不能低于0,最高血量不能高于hp的最大值(即初始值)。文中所提到的技能即为我们代码中的方法。

Game类

package 实验6;
public class Game {
	public static void main(String[] args) {
		int count=0;
		Hero p1=new Hero("吕布",100,50,40);
		Hero p2=new Hero("关羽",180,45,42);
		p1.info();
		p2.info();
		//调用攻击方法,A与B单挑
		int HP;
		do {
			System.out.println("------第"+(count+1)+"回合------");
			HP=p1.Attack(p1,p2);
			if(HP==0)break;
			count++;
			//回合次数为五则B补充一次血量
			if(count%5==0) {
				p2.CureHero();
				continue;
			}
			//回合次数次数不为5的时候,B不补充血量,可以攻击
			if(count%5!=0) {
				HP = p1.Attack(p2,p1);
			}
		}while(HP>=1);
		System.out.println("总回合数为"+count);
	}
}

Hero类

package 实验6;

public class Hero {
	private String name;//英雄名字
	private int hp;		//血量
	private int att;	//攻击力
	private int def;	//防御力
	private int PrimeHp;
	
	public Hero(String name,int hp,int att, int def) {
		this.name=name;
		this.hp=hp;
		this.att=att;
		this.def=def;
		PrimeHp=hp;//初始血量
	}
	
	public void info() {
		System.out.println("英雄姓名:"+name+",血量:"+hp+",攻击力:"+att+",防御力:"+def);
	}
	
	
	public int Attack(Hero a,Hero b) {
		int hp;
		hp=a.att-b.def;
		b.hp=b.hp-hp;
		if(b.hp>=1) {
			System.out.println(a.name+"对"+b.name+"造成了"+hp+"点伤害,"+a.name+"剩余血量:"+a.hp+","
					+ ""+b.name+"剩余血量:"+b.hp);
		}
		else {
			System.out.println(a.name+"击杀了"+b.name+","+b.name+"死亡");
		}
		return b.hp;
	}
	
	//治疗方法
		public void CureHero() {
			int add;
			add=hp+20;
			if(add>=PrimeHp){
				hp=PrimeHp;
				System.out.println(name+"血量已补满");
			}
			else {
				hp=add;
				System.out.println(name+"补充20点血量");
			}
		}
	
}