zoukankan      html  css  js  c++  java
  • 回合制对战游戏第二篇

    一.  知识点:

    继承

    1. 需要使用继承的原因:一是提高代码的重用性;节约开发程序的时间,二是提高程序的扩张性。完善或新增内容。
    2. Java继承的语法格式:
    • java继承的关键字:extends;
    • 格式是:Public class 类名(子类、派生类、超类) extends类名(父类、基类){}
    • 需要使用继承的情况:包含关系:学生包含大学生、初中生…
    1. 子类继承了父类全部的内容,子类继承到了父类所有的属性和方法。
    •     注意点:访问修饰符的使用范围
    访问修饰符  同类中    同包中  不同包中 不同包但是有继承关系的子类中
      Private 可以   不可以  不可以    不可以
    默认的 可以    可以   不可以     不可以
    Protected   可以         可以    不可以  可以
    Public   可以    可以   可以  可以

     

     

     

     

     

     

    • 在子类中同样可以定义父类中没有的属性和方法。

    方法重写

    • 当父类中存在某一个方法,但是子类也有这个方法,但是方法的具体事项不同时使用方法重写。
    • 例如:父类有一个看书学习的方法,子类也有一个看书学习的方法,但是两者不一致。这时就要用到方法重写。

    重写的条件:

    1. 必须存在继承关系。
    2. 子类再重写父类方法时,子类方法的访问修饰符要比父类方法的访问修饰符范围大。
    3. 子类在重写父类方法时,子类的返回值类型,方法名,参数都要和父类方法的完全一致。
    4. 子类在重写父类方法时,子类方法中的代码必须要和父类的代码不同。
    5. Private访问修饰符的方法不能重写;final修饰的方法不能重写。

    调用重写的方法:

    • new关键字后的类名是谁,那么就优先调用谁的方法
    • 如果类名是子类的,那么会优先调用子类的方法,如果子类没有这个方法,才会调用父类的方法。

    自动转型:

    • java中所说的自动转型,在平常我们用的很多,但也常常容易被忽略;自动转型也就是在两个存在继承关系的类,
    • 自动转型的格式:
    • 父类名 对象名 = new 子类构造方法(参数值,...);
      • 格式二:
      • public void method(父类名 参数名){}

    子类名 对象名a = new 子类构造方法(参数值,...); 父类名 对象名b = new 子类构造方法(参数值,...);
    method(对象名a);
    method(对象名b);

    • 老实说对于自动转型还并不是太懂,这需要之后在使用中继续理解。

     二.任务:

    二.回合制对战游戏:回合制对战游戏:奥特曼A和小怪兽A进行PK,直到一方的血量为0时结束战斗,输出谁胜利了!

         如果奥特曼A胜利,则奥特曼A和奥特曼B进行Pk,直到一方的血量为0时结束战斗,输出谁胜利了!

         如果小怪兽A胜利,则小怪兽A和小怪兽B进行Pk,直到一方的血量为0时结束战斗,输出谁胜利了

     

    思路:

    1. 奥特曼打一次小怪兽,小怪兽的血量减1;  小怪兽打一次奥特曼,奥特曼的血量同样减1;
    2. 在主函数中利用for 和if循环实现攻击;
    3. 先是for循环和if判断实现奥特曼A和小怪兽A进行PK,奇数时,小怪兽打奥特曼,偶数时,奥特曼打小怪兽。再用if语句来判断实现当奥特曼A胜利时,奥特曼A和奥特曼B进行PK,或者小怪兽A胜利时,小怪兽A和小怪兽B进行PK。( 当小怪兽A的血量为零时,则奥特曼A和奥特曼B进行PK,否则小怪兽A和小怪兽B进行PK。)
    4. 奥特曼的类:hero和小怪兽的类:Monster,这两个类下继续建立hero2和monster2 这俩个子类。

    代码:

    Monster(父类)函数:

    public class Monster {
    
        public int bloodValue;
    
        public String name;
    
        public void fight(hero her){
    
            her.bloodValue--;
    
             System.out.println(name+"正在和"+her.name+"战斗, "+her.name+"的剩余的血量是"+ her.bloodValue);
    
             if(her.bloodValue<=0){
    
                     System.out.println(name+"赢了");
    
             }                
    
        }
    
    }

    Monster2(子类)函数:

     public class monster2 extends Monster {
    
         public void fight2(Monster mon2) {
    
         mon2.bloodValue--;
    
         System.out.println(name + "正在和" + mon2.name + "战斗," + mon2.name + "的剩余的血量是" + mon2.bloodValue);
    
         if (mon2.bloodValue <= 0) {
    
            System.out.println(name + "赢了");
    
            }
    
       }
    
     
    
    }
    
     

     

    注意点!:

    1. 注意分开写循环,避免逻辑错误;

    2. 用Break跳出循环,避免出现死循环;

    3. 学会用while循环,进行判断,简化程序。

    4.因为小怪兽和奥特曼的特征和行为是一样的所以可以创建一个父类。注意类的创建,有益于简化程序。类是根据生活中对象的特征以及行为(功能),按照程序中类的固定格式进行的抽象定义。当对象的特征以及行为(功能)相同时,他们就可以属于一个类。

     

  • 相关阅读:
    C#-练习题
    C#-命名空间(十五)
    C#-枚举(十三)
    C#-多态(十二)
    C#-继承(十一)
    C#-结构体(十)
    C#-类(九)
    C#-方法(八)
    二叉树深度遍历和广度遍历
    iOS main.m解析
  • 原文地址:https://www.cnblogs.com/hesi/p/5517696.html
Copyright © 2011-2022 走看看