把这学期的Java作业整理了一下,有十几次实验作业吧,连续更新。
文章目录
- 我把3个题合在一起做了
- 1. 根据课堂上讲授的使用类的构造方法去给对象的属性赋值。
- 2.this关键字的使用
- 3.创建一个英雄类(Hero),该类拥有3个属性,名字(name)、血量(hp)、攻击力(att)、防御力(def)。
我把3个题合在一起做了
1. 根据课堂上讲授的使用类的构造方法去给对象的属性赋值。
- 创建一个英雄类(Hero),该类拥有4个属性,名字(name)、血量(hp)、攻击力(att)、防御力(def)。
- 给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)。
- 创建两个英雄,给他们的属性赋值,名字自己起,第一个英雄血量100,攻击力50,防御力40,第二个英雄血量180,攻击力45,防御力42。(属性值也可自拟)
- 该类拥有一个方法,显示英雄信息(名字自拟也可以叫info),格式为:英雄姓名:xx,血量:xx,攻击力:xx,防御力:xx,请在main函数中分别调用两个英雄的该方法以显示两个英雄的相关属性信息(也可自拟)。
- 英雄类拥有攻击这个方法,该方法的作用是对对方英雄造成伤害(降低对方hp),伤害计算公式为:伤害=己方攻击力-对方防御力,即A英雄对B英雄的伤害=A英雄的攻击力-B英雄的防御力。很明显该方法的两个参数可以是攻击力和防御力,注意伤害最小为1。即不能为0也不能为负(注意在方法中添加相关的判断不能<1的条件)。
- 执行一次A英雄的攻击方法(即A对B做一次攻击),然后再显示结果格式为:A对B造成了XX点伤害,A的剩余血量为,B的剩余血量为XX(也可自拟)
进阶题 - 跳过第五步,这时A与B开始1对1单挑(满血开始),战斗模式为回合制,A先出手,即A打B一次,B再打A一次,如此循环,通过代码实现显示战斗结果。格式为XX击杀了XX(也可自拟)
- 请在显示战斗结果的同时实现显示战斗过程,
增加内容
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点血量");
}
}
}