这是上期教程: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;}}

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

类的补充

标识符的命名规范

类的命名规范

  • 使用间接的表示类的内容的名称 Car - 汽车类
  • 单词的首字母记得大写,之后的字母小写 Person - 人物类
  • 由多个单词排列的话,每个单词的首字母大写 NetworkManager - 网络管理类

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

  • 一个单词就直接小写 move
  • 多个单词 那么第一个单词全部小写外 后面的单词 首字母都大写 moveMap

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

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

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

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

    Java 游戏开发:关于Java面向对象的知识(一) 软件的生命周期(了解即可) 由于我们是大专生 这里的生命周期是之前软件工程的笔记,你们了解就可以了 什么是软件的生命周期 一个软件从被开发到被正式 ...

  2. 【源码+图片素材+详细教程】Java游戏开发_Java开发经典游戏飞翔的小鸟_飞扬的小鸟_Java游戏项目Flappy Bird像素鸟游戏_Java课程设计项目

    课程目标: 1.通过本课程的学习巩固Java的相关基础知识,例如循环判断,数组和集合的使用,对象的继承,接口的实现,窗口的创建,事件监听,图形绘制. 2.完成小鸟的移动,管道自动生成.碰撞死亡,计分系 ...

  3. java游戏开发杂谈 - 实现游戏主菜单

    经常玩游戏的同学,大家都知道,游戏都会有个主菜单,里面有多个菜单选项:开始游戏.游戏设置.关于游戏.退出游戏等等,这个菜单是怎么实现的呢. 有一定桌面软件开发基础的同学可能会想到,用JButton组件 ...

  4. java游戏开发(java游戏开发教程)

    Java游戏开发绘图器是什么呢? 众所周知,Java GUI以paint进行绘图,以repaint进行图像刷新,而完成repaint及paint这一连贯过程中所用到绘图组件,我将其称为绘图器.就我个人 ...

  5. 【Java游戏开发】坦克大战(附源码+课件+资料)

    本课程讲解了一个坦克大战游戏的详细编写流程,即使你是刚入门java的新手,只要你简单掌握了该游戏所需要的javase基础知识,便可以跟随教程视频完成属于你自己的坦克大战游戏!同时还可以加深和巩固你对面 ...

  6. 三七互娱 Java游戏开发工程师 面试(两轮技术+HR面)

    (2020春招补招,已拿到offer) 抱着投着试试看的心态去的 自己还是不太了解游戏开发 框架啊这些都没怎么问 比较重视基础知识,面的也基本都是基础知识 所以面完才发现自己太基础的知识反而一问三不知 ...

  7. 【11款最全最新】Java游戏开发项目合集_Java项目实战_Java练手项目

    黄金矿工.俄罗斯方块.飞机大战.超级玛丽.坦克大战.飞翔的小鸟.扫雷.王者荣耀.推箱子.贪吃蛇.大鱼吃小鱼这些经典小游戏相信很多人都玩过.那大家有没有想过亲自制作出这些小游戏呢? 下面就给大家分享这1 ...

  8. Java游戏开发《超级玛丽》附课件+源码+资料

    <超级玛丽>这款游戏想必大家都玩过,在市面上五花八门的游戏我们眼花缭乱,但是都无法与童年的记忆相比较,经典版的超级玛丽小编觉得是我们00后的童年回忆. 在你的童年记忆里,是否有一个会蹦跳, ...

  9. 游戏开发总结-java篇

    游戏开发总结-java篇 前言 网络通信 数据存储 逻辑开发 逻辑开发一般遇到的问题有: Java游戏服务器方面的开发要掌握的技术: java服务器目前主流框架技术 前言 Java语言,由于学习成本低 ...

最新文章

  1. 深入Java核心 Java中多态的实现机制(1)
  2. 三列浮动中间列宽度自适应
  3. RenderTextureFormat.ShadowMap
  4. 洛谷 P3378 【模板】堆
  5. Mysql_mysql 性能分析及explain用法
  6. Spark基础学习笔记16:创建RDD
  7. python如何只保留数字_如何查询刷卡消费有没有积分?只需用4个数字马上能查...
  8. C#图片处理之:Gamma校正
  9. CentOS7 扩容时发现 /dev/mapper/centos-home 不存在,创建后登录终端显示 -bash-4.2
  10. Trisk:在 Flink 实现以 task 为中心的流处理动态 Reconfiguration 的 Control Plane
  11. idea文件夹代颜色代表的含义
  12. U8如何月结及反结账
  13. 落日余晖,listview快速编写
  14. MyBatis框架的基础用法(增删改查)
  15. 安装Python3.6.3+spyder
  16. html文件如何设置为桌面壁纸,怎样把文件里的图片设置为桌面背景时全部是全屏图?最好详细一点的。...
  17. 【深度学习】卷积概念以及卷积核层数
  18. 触屏型测控电路:串口助手网络ping包 带笔划输入法 硬件终结版
  19. 用计算机控制150个继电器,计算机怎样控制单片机里的继电器
  20. 伺服电机控制转速与干扰防御措施

热门文章

  1. java计算机毕业设计高校在线教师教学学术能力评价系统源码+数据库+系统+lw文档+mybatis+运行部署
  2. 必备:音乐的魅力,一边听歌一边练习英语!
  3. android记事本程序需求分析文档,记事本程序的需求分析
  4. Isaac Sim机器人仿真平台
  5. 对固定资产折旧及其折旧方法的探讨
  6. 代码随想录1刷—贪心算法篇(二)
  7. SVN服务器的搭建与使用
  8. 电子商务有哪几种模式
  9. 基于Android的财务系统
  10. STM32单片机修改寄存器的位操作方法(全网最全)