zoukankan      html  css  js  c++  java
  • JAVA第一次平时作业

    作业要求:

    设计一个类,要求有一些基本属性及两个以上的方法。
    (可从日常生活中抽取)
    在类中加入2个不同参数的构造方法。
    再设计一个类,包含main方法,对上面的类进行应用与
    测试。
    该作业要求编程并调试通过。
    对你设计的类要有详细的文字说明(类所封装的内容,
    属性、方法的功能与含义等)。

    说明:

    本次作业主要实现两个怪兽之间的相互攻击,直到其中一个怪兽死亡时攻击停止。
    作业中提交了整个project
    写了两个.java源文件,存于homework1srchomework1目录下

    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 }

    运行结果:

  • 相关阅读:
    2018-2019-2 20189203 移动平台应用开发实践第六周学习总结
    安全类会议级别
    信息安全工程实践WEEK5,开发WEEK2
    信息安全工程实践WEEK5,开发WEEK1
    如何在Word中排出漂亮的代码
    2018-2019-1 20189204《Linux内核原理与分析》第九周作业
    2018-2019-1 20189204《Linux内核原理与分析》第八周作业
    2018-2019-1 20189204《Linux内核原理与分析》第七周作业
    2018-2019-1 20189204《Linux内核原理与分析》第六周作业
    2018-2019-1 20189204《Linux内核原理与分析》第五周作业
  • 原文地址:https://www.cnblogs.com/mizersy/p/10347742.html
Copyright © 2011-2022 走看看