簡體   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