Java 中国象棋 day3
00 分钟
2024-9-12
2024-9-18
tags
date
type
status
slug
summary
category
password
icon
前言:实际上这应该是昨天也就是 2024/9/11 写的,但是没来得及发,所以就由今天发了

day3

p15马走日字

  • 个人觉得有个问题应该先被优化,就是路径上是否有其他棋子,
  • 找蹩脚点真的很牛逼

p16车

  • 实际上应该包括目标点,起点可以不用包括原点,看路径上有没有棋子,没有返回0,有判断是不是在目标点(即吃子)返回2,否则返回1(即路径上非终点有棋子挡住了)
  • 一定得注意局部变量的名字和属性的方法的问题
  • up主这里的问题是将循环统一化,没有分开,也就是不区分起始点和目标点谁小,默认将小的点当作起始点,实际上这可能是终点
  • 同时又引用start和end表示起点,终点,这个在循环当中就有问题

p17炮和吃子

  • 得知道棋子的位置,再将它从数组中删除被吃掉的棋子
  • 一开始不知道它的位置,得知道,这里使用索引解决每次的遍历搜索问题
  • 空指针异常

18兵规则

  • 能不能过河,看的是它的位置点,而不是目标点
  • up主想的太复杂了,应该牺牲掉代码复用性,直接选择分两种情况,过河可以左右前进一格没过河只能进去1格即可,没必要考虑能不能后退
  • tp是目标 p 是当前
  • 直接在兵的判断能不能走那里,使用两个if判断能不能
  • 现在up主更新后的代码又好了

p21 棋盘规则的实现

  • 红方不可以操作黑方棋子
  • 轮流走棋
  • 记住当前得到阵营

p22 Java方法总结

  1. 存在一个情况,并没有用到太多的面向对象中太多的知识点 ——
  1. 面向对象与面向过程
  1. 类和类的成员
    1. 类的定义格式
    2. 类与对象
      1. 引用
      2. 匿名对象
    3. 以图形为例
      1. 直线-Line
      2. 矩形-Rect
      3. 圆-Circle
      4. 使用swing绘制图形
    4. 类的成员
      1. 属性
        1. 实例方法
          1. 权限修饰符 返回值类型 方法名(形参列表){方法体}
          2. 调用:必须通过 实例.方法(有参传参 )
          3. 返回值类型
            1. void 方法不需要强制写return语句
            2. 数据类型 —— 必须有关系的值或对象,可能是基本数据类型,保持一致,如果是引用数据类型,可以返回的是子类对象或相同类型的值
        2. 类方法
          1. 权限修饰符 static 返回值类型 方法名(形参列表){方法体}
          2. 调用:通过 实例.方法(有参传参 ) 或 类名.方法名(实参)
          3. 构造方法
            1. 权限修饰符 返回值类型 方法名(形参列表){方法体}
            2. 方法体内一定是默认第一行super(实参);//调用父类中的构造方法
            3. 作用:当构造对象的时候,必须要做的事情,可以写在构造方法中
            4. 每个类都有一个无参的构造方法,如果显式定义了一个有参的构造方法,则不再默认的构造方法,需要显示的定义
      2. 方法
        1. 定义
          1. 实例方法
          2. 类方法
          3. 形参
        2. 调用
          1. 实例方法
          2. 类方法
          3. 实参
        3. 重载
          1. 方法名称相同,形参列表列表不同
          2. 与返回值类型无关
          3. 与形参名无关,但是和顺序有关
        4. 可变参数
        5. 传参
          1. 值传递
          2. 地址传递
        6. 构造方法
        7. 重写
      3. 构造方法
        1. 作用
      4. 重载
        1. this
      5. 代码块
        1. 普通代码块
      6. 静态代码块
      7. 内部类
        1. 实例内部类
      8. 静态内部类
  1. 三大特征
    1. 封装
      1. get set方法
      2. toString方法
    2. 继承
      1. 权限修饰符
      2. 继承方式
      3. super
        1. 属性
        2. 方法
      4. 方法的重写
      5. 子类对象的创建过程
      6. 类型转换
        1. 转换异常
    3. 多态 —— 一个子类对象有多种形态,可以是父类对象形态,也可以是子类本身对象形态
      1. 格式:父类 实例名 = new 子类构造方法(参数列表)
      2. 条件
        1. 继承
        2. 实现
      3. 理解
      4. 使用
    4. 对象的比较
      1. ==操作符
      2. equals方法
      3. equalslgnore方法
    5. 抽象 —— 一个不具体的类(大杂烩hhh)
      1. 关键字: abstract
        1. 作用:修饰类(抽象)、方法(抽象)
          1. 用来设计一个没有具体功能的类
        2. 注意:
          1. 不可以被实例化(类名 实例名 = new 构造方法()
          2. 抽象类可以有构造方法,其构造方法主要是被子类来使用的
          3. 抽象类可以有抽象方法、也可以有实例方法和静态方法
          4. 抽象方法和抽象类,不可以被 static final private等关键字修饰
            1. 抽象类方法的格式: 权限修饰符 abstract 返回值类型 方法名(形参列表);
            2. 一般使用public
            3. 方便多人开发合作,一般抽象类由组长定义,具体的功能由子类来实现
            4. 团队主管主导项目
          5. 抽象方法,必须通过子类重写来使用
          6. 抽象方法只存在于抽象类和接口中
      2. 方法
      3. 构造方法的作用
      4. 相关冲突的关键字
    6. 接口
      1. 关键字 && 特性
        1. interface 关键字定义,其他的与类没有太大差异
        2. 接口中只能存 public abstract 修饰方法
        3. 所以接口比抽象类更抽象
        4. 继承只能单一继承,但是抽象可以多实现
        5. 接口中只能有常量,不能有其他属性
        6. 在JDK开始,其接口支持使用default实现,
      2. 实现
      3. default修饰符
      4. 匿名内部类对象
    7. final关键字
      1. 属性
      2. 方法
匿名对象只能被使用一次

p23 使用抽象类改版程序

  • 抽象类了,不能被初始化了
  • 虽然创建对象变麻烦了,但是为了多元同时合作
  • 解耦合,解决上面的问题,使用多态和开发模式降耦合度
 
 
上一篇
Java 中国象棋day1-4 大汇总
下一篇
Java 中国象棋 day2

评论
Loading...