编程语言
首页 > 编程语言> > Java 游戏开发:关于Java面向对象的知识( 四)

Java 游戏开发:关于Java面向对象的知识( 四)

作者:互联网

这是上期教程:Go To It!
新年过去了,鸽了几天的教程,今天我们开始继续学习(新年快乐~)

游戏人物类的实现

对于一个游戏人物而言,我们可以想到以下的字段:

  1. 最大血量
  2. 当前血量
  3. 名称
  4. 装备数组(也可以是列表但是可能我们现在还不知道什么是列表…)
  5. 当前所在地图
  6. 当前所在坐标数组
  7. 等级
  8. 是否死亡

我们想一想那些字段我们是可以封装成属性的

最大血量 好像不用 因为 最大血量 只会因为 装备与等级的数值变换而改变其大小,我们可以将其设置成隐私(私有)字段,但是将其封装成属性还是没有那个必要

当前血量 可以~ 因为每次受伤我们都要检测他的血量是否低于0 如果低于0了 人物就死亡了 每次回血的时候 我们还需要看看 血量是不是超过了最大的血量 超过了就限制一下 所以我们很有必要将其设置成属性

名称 装备 地图 坐标 等级 都可以当做字段对待,不需要进行封装(如果你乐意也可以)

**但是为了确保数据的完整性,你可以给上面所有的字段考虑进行私有化 **

方法的话我们可以设置这些

  1. 技能(多个也没毛病)- 人物的动作与超能力
  2. 升级 (当然你可以把等级封装成属性,升级就给这个属性传个1就可以了,看你的习惯了) 等级的提升往往会导致人物血量的上限有所提升
  3. 移动 - 地图或者坐标的改变
  4. 。。。。 很多很多 看你的游戏需要了

我们来敲敲代码看看可以实现吗?

public class chara {
    private int maxHp;
    private int _nowHp;
    public String name;
    public String[] arrayEquip;
    public String nowArea;
    public int[] nowPosition;
    public int level;
    public boolean isDead = false;

    public int get_nowHp() {

        return _nowHp;
    }
    
    public void set_nowHp(int hpValue){
        // params: hpValue: 对血量影响的值
        int temp = _nowHp - hpValue;
        if (temp > 0) _nowHp = temp; // 血量正常 的时候 就直接 给她就完事了
        else if(temp > maxHp) _nowHp = maxHp; // 血量 大于 最高血量 那就说明 你回血回复满了 所以需要进行 上限限制
        else if(temp < 0) isDead = true; // 人物死亡~
    }
    
    public int skillA(){
        return 12;// 12 是伤害
    }
    
}

this 详解

上期教程我们谈到了this 但是也只是草草掠过 现在我们再来详细讲讲this的作用

public class student {
    private String _name; // 姓名
    private String _id; // 考号
    private String _classroom; // 考场
    public student(){
        // 无参数的构造方法

    }
    public student(String _id,String _name,String _classroom){
        // student 的 有参数构造方法

        System.out.print(_id);

    }

}

在代码中我们创建了一个学生类 在他的构造方法里面 我们打印了_id这个变量 由于作用域的影响 JVM会先打印参数id的字面值,而不是student类字段的字面值
我们要记得一点,这点是非常重要的,你需要琢磨琢磨

在具有与类字段相同名称的形参或者局部变量的方法(包括构造)类的字段会被隐藏。

当我们需要在具有与类字段同名称的方法使用类字段的值,我们可以在类字段前面加上 this ,我们知道this就是在类的内部创建了一个引用自身实例对象的变量 但是与外部对象不同的是,this关键字可以很轻松的访问类的私有部分
我们对之前的代码进行升级,得到了

public class student {
    private String _name; // 姓名
    private String _id; // 考号
    private String _classroom; // 考场
    public student(){
        // 无参数的构造方法

    }
    public student(String _id,String _name,String _classroom){
        // student 的 有参数构造方法

        this._id = _id;
        this._name = _name;

    }

}

这些就差不多是类的基础知识了,在之后的学习中 我们还需要继续深入了解类的其他作用,以下是类基础的补充部分:

类的补充

标识符的命名规范

类的命名规范

方法的命名规范(构造方法除外)

还有很多 感兴趣的话就去这里看看:Java_命名规范

标签:Java,String,血量,private,id,面向对象,student,public,游戏
来源: https://blog.csdn.net/tc9527_/article/details/113928682