博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
回合制对战游戏第二篇
阅读量:5824 次
发布时间:2019-06-18

本文共 2285 字,大约阅读时间需要 7 分钟。

一.  知识点:

继承

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

 

转载于:https://www.cnblogs.com/hesi/p/5517696.html

你可能感兴趣的文章
re:Invent解读:没想到你是这样的AWS
查看>>
PyTips 0x02 - Python 中的函数式编程
查看>>
使用《Deep Image Prior》来做图像复原
查看>>
Linux基础命令---rmdir
查看>>
Android图片添加水印图片并把图片保存到文件存储
查看>>
BigDecimal 舍入模式(Rounding mode)介绍
查看>>
开源 免费 java CMS - FreeCMS1.2-标签 infoSign
查看>>
Squid 反向代理服务器配置
查看>>
Java I/O操作
查看>>
Tomcat性能调优
查看>>
Android自学--一篇文章基本掌握所有的常用View组件
查看>>
灰度图像和彩色图像
查看>>
FreeMarker-Built-ins for strings
查看>>
argparse - 命令行选项与参数解析(转)
查看>>
修改上一篇文章的node.js代码,支持默认页及支持中文
查看>>
spring-boot支持websocket
查看>>
菜鸟笔记(一) - Java常见的乱码问题
查看>>
我理想中的前端工作流
查看>>
记一次Git异常操作:将多个repository合并到同一repository的同一分支
查看>>
Chrome 广告屏蔽功能不影响浏览器性能
查看>>