JAVA第一次平时作业
作业要求:
设计一个类,要求有一些基本属性及两个以上的方法。
(可从日常生活中抽取)
在类中加入2个不同参数的构造方法。
再设计一个类,包含main方法,对上面的类进行应用与
测试。
该作业要求编程并调试通过。
对你设计的类要有详细的文字说明(类所封装的内容,
属性、方法的功能与含义等)。
说明:
本次作业主要实现两个怪兽之间的相互攻击,直到其中一个怪兽死亡时攻击停止。
作业中提交了整个project
写了两个.java源文件,存于homework1\src\homework1\目录下
Monster.java中为怪兽类
怪兽还有血量、法力值、攻击力、血量上限、法力上限等属性
有攻击敌人、被攻击、判断是否存活、判断能否攻击等方法
Test.java中构造了两个怪兽,并令其彼此攻击
代码:
monster类
package homework1; public class Monster{ public int HP;//怪兽的血量 private boolean alive;//怪兽是否活着 public int MP;//怪兽的法力值 public int damage;//怪兽的攻击力,1点攻击力可降低敌人1点血量,做出多少攻击就要降低自身多少法力值 final int max_HP = 100;//怪兽的血量上限 final int max_MP = 100;//怪兽的法力上限 public Monster(){//无参数传递的构造方法 HP = max_HP;//默认血量为最大值 MP = max_MP;//默认法力为最大值 damage = 1;//默认攻击力为1 alive = true;//怪兽处于存活状态 } public Monster(int HP,int MP,int damage){ if (HP < 0 || MP < 0 || HP > max_HP || MP > max_MP){ //如果血量不处于0~max_HP,或法力值不处于0~max_MP,则为非法怪兽 System.out.println("illegal monster!"); }else{ this.HP = HP;//将血量赋值给怪兽 this.MP = MP;//将法力值赋值给怪兽 this.damage = damage;////将攻击力赋值给怪兽 if (HP > 0){//如果HP>0说明怪兽处于存活状态 alive = true; }else{//否则怪兽已死亡 alive = false; } } } public void beAttacked(int damage){//怪兽受到攻击 if (HP - damage < 0) HP = 0;//如果血量小于所受攻击,HP等于0 else HP = HP - damage;//血量因攻击而减少 if (this.HP == 0){//如果HP=0,说明怪兽已死亡 this.alive = false; } } public boolean isAlive(){//判断怪兽是否活着 return alive; } public boolean canAttack(){//如果法力值大于自身攻击力,则可以攻击 return MP >= damage; } public void attackOthers(){//怪兽攻击敌人 if (MP - damage < 0) {//如果法力值低于攻击力,则无法攻击 System.out.println("攻击失败!"); }else MP -= damage;//法力值因攻击而减少 } }
test类
1 package homework1; 2 3 import java.util.*; 4 5 public class Test { 6 public static void main(String args[]){ 7 //monster1采用不传参构造方法 8 Monster monster1 = new Monster(); 9 10 //读入monster2的血量、法力值和攻击力 11 Scanner sc = new Scanner(System.in); 12 System.out.println("请输入monster2血量:"); 13 int monster_HP = sc.nextInt(); 14 System.out.println("请输入monster2法力:"); 15 int monster_MP = sc.nextInt(); 16 System.out.println("请输入monster2攻击力:"); 17 int monster_damage = sc.nextInt(); 18 sc.close(); 19 20 //将所读入的血量、法力值和攻击力作为参数构造monster2 21 Monster monster2 = new Monster(monster_HP,monster_MP,monster_damage); 22 23 //当monster1和monster2都存活时,彼此攻击 24 while(monster1.isAlive() && monster2.isAlive()){ 25 26 //monster1攻击monster2 27 if (monster1.canAttack()){//如果monster1能攻击 28 monster1.attackOthers();//monster1状态更新 29 monster2.beAttacked(monster1.damage);//monster2状态更新 30 } 31 32 //monster2攻击monster1 33 if (monster2.canAttack()){//如果monster2能攻击 34 monster2.attackOthers();//monster2状态更新 35 monster1.beAttacked(monster2.damage);//monster1状态更新 36 } 37 } 38 39 //判断结果 40 if (monster1.isAlive()){//如果monster1还活着,说明monster1是胜利者 41 System.out.println("Monster1 is the winner!"); 42 }else if (monster2.isAlive()){//如果monster2还活着,说明monster2是胜利者 43 System.out.println("Monster2 is the winner!"); 44 } 45 } 46 }
运行结果: