繁体   English   中英

在简单的Pong游戏中找出Java方法

[英]Figuring Out a Java Method in a Simple Pong Game

我指的是以下开源Android Pong游戏: https : //github.com/Grarak/Pong-Android/tree/master/app/src/main/java/com/grarak/pong

通过调试代码并查看根据屏幕上发生的情况触发的方法和条件,我可以了解所有方法及其工作方式。 但是,在整个项目中有一种方法我无法弄清其目的,尽管每当球碰到屏幕边缘时都会大量使用它。 我只是不知道为什么要这样计算,其算法的逻辑是什么。

有问题的方法名为“ getVelocityY”,它在页面底部: https : //github.com/Grarak/Pong-Android/blob/master/app/src/main/java/com/grarak/pong/ Ball.java

将不胜感激,您可以在解决这一问题上提供任何帮助。 我很乐意回答您可能遇到的任何问题,如果您希望我用简单的英语记录该项目的其他方法,以防您需要。

这是该方法的细目分类,即使对于SO而言这并不是真正合适的问题。

private double getVelocityY(Paddle paddle, float radius) {

设置5个击打框以确定球在哪个区域击中桨

    Float[][] hitboxes = new Float[5][2];
    for (int i = 0; i < hitboxes.length; i++) {

计算此命中框的最小和最大位置

        hitboxes[i][0] = (paddle.getLength() / hitboxes.length) * i + paddle.getHeight();
        hitboxes[i][1] = (paddle.getLength() / hitboxes.length) * (i + 1) + paddle.getHeight();

扩展边缘的击打框,以确保球的edgeo(具有给定的半径)仍会击中球拍。 注意:此代码可能已移出迭代。

        if (i == 0) hitboxes[i][0] -= radius;
        else if (i == hitboxes.length - 1) hitboxes[i][1] += radius;
    }

根据球击中桨叶的位置确定速度变化。 如果到达中心,则速度不变。

    for (int i = 0; i < hitboxes.length; i++) {
        if (position.y > hitboxes[i][0] && position.y < hitboxes[i][1])
            switch (i) {
                case 0:
                    return -4;
                case 4:
                    return 4;
                case 1:
                    return -2;
                case 3:
                    return 2;
            }
    }
    return 0;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM