美文网首页
Java考核知识复盘

Java考核知识复盘

作者: 看繁星 | 来源:发表于2023-05-06 17:43 被阅读0次

        Java考核进行得比较顺利,考核的学长学姐特别好,没有十分紧张,所以发挥的也不错。接下来对我在考核中出现的一些知识性问题进行复盘。

        问题1:游戏的碰撞检测都有哪些方法?

        首先是游戏的设计,我选择常规的游戏,超级玛丽进行考核,整体的设计思路是模仿尚学堂的教程,其中有一部分自己的思想和功能。出问题的一点是碰撞检测,我用的方法是不断获取坐标来判断是否实现碰撞,但这种方法有两方面的弊端:一是计算量、代码量复杂,我捣鼓了好久。二是会在一些特殊情况出现bug,比如在一些比较刁钻的角度会出现穿模的情况,这明显违背游戏合理严谨的原则。经过查询各种资料,实现碰撞检测有三种方法:

        1.矩形碰撞检测。矩形碰撞检测的基本思路是将物体视为一个矩形,然后判断两个矩形是否发生了重叠,如果重叠则认为发生了碰撞。

        在Java中可以通过创建Rectangle的对象,并调用其构造方法,向其中传入障碍物的坐标即可。然后通过intersects()方法判断两个矩形是否相交。

        2.圆形碰撞检测。这是一种更加精确的碰撞检测方法。圆形碰撞检测的基本思路是将物体视为一个圆形,然后计算两个圆形之间的距离,如果距离小于两个圆形的半径之和,则认为发生了碰撞。具体实现可以通过计算两个圆形中心点之间的距离来判断是否发生了碰撞。        

具体用Java实现的话,可以写一个Cricle类,构造方法中定义圆的参数,并写一个intersects()方法来判断圆是否碰撞。

        3.像素碰撞检测:这是一种更加精确但计算量较大的碰撞检测方法。像素碰撞检测的基本思路是将物体视为一个矩形,并将矩形内的像素点进行比较,如果有重叠的像素点,则认为发生了碰撞。具体实现可以通过读取两个物体的像素数据,然后比较它们之间的重叠情况来判断是否发生了碰撞。    

        这种方法也是我最初用的方法,比较原始,但计算量大,十分麻烦,在小型游戏中,一般采用矩形碰撞检测就可以满足需求。由于我对像素坐标计算不够精细,就会导致问题的产生。

        问题2:如何在一个构造方法中,去调用另一个构造方法?

        这个问题之前见过一两次,但不够重视,而且当时看的博客写的也比较乱,难以记忆,想的起来问题,却想不起来答案。

        在 Java 中,可以使用 this() 关键字在一个构造方法中调用另一个构造方法。这种语法称为构造方法重载,它可以让你在一个构造方法中重用另一个构造方法的代码。

如果你想在一个构造方法中调用同一个类中的另一个构造方法,可以使用 this() 关键字,后跟需要调用的构造方法的参数列表。

        而关于super()。如果你想在一个构造方法中调用父类的构造方法,可以使用 super() 关键字,后跟需要调用的构造方法的参数列表。

        问题3:如何具体实现向下转型?

        在 Java 中,使用向下转型可以将一个父类对象转换为其子类对象。但需要满足两个条件:

      1. 父类对象本身就是子类对象,即父类对象引用的实际对象是子类对象。

        2.父类对象已经被向上转型为父类类型,需要将其转换回子类类型。(重点,我当时就不清楚这一点)

        向下转型具有一定的危险性,如果需要向下转型,一定好满足条件,并且抛出异常。

        先不说游戏质量,这三个是我当时考核的时候答得不好得问题,需要自己对前面得知识进行翻书,更精细得去学习回顾。最后,十分期待我作为考核官得收获。

相关文章

网友评论

      本文标题:Java考核知识复盘

      本文链接:https://www.haomeiwen.com/subject/zzucsdtx.html