簡體   English   中英

如何彈起運動槳球

[英]How to bounce ball of moving paddle

好的,我在嘗試在BlueJ上編程的游戲遇到了一些困難。 到目前為止,我有一個球在彈跳,還有一個可以用鼠標移動的槳。 我試圖使球基本上從我的球拍上反彈到我移動的任何地方。

我有三節課,我知道很長一段時間,但是我真的可以使用一些幫助。

public class MAIN {

    public void begin(){
        Paddle = new Paddle(140,400,100,canvas);
        ball = new Ball (180,50,canvas, Paddle)//ball can recognize paddle
    }

    public void onMousemove (Location p){
        Paddle.move(p);
    }
}

public class Paddle {

    public Paddle (int x, int y, int s, DrawingCanvas c){
        ((JDrawingCanvas)c).setBackground(Color.green);
        paddle = new FilledRect(x,y,s,10,c);
    }
    public void move (Location p){
        paddle.moveTo(p.getX(),p.getY());
    } //paddle, and to move paddle
}

public class Ball {

    Drawing Canvas myCanvas;
    FilledRect paddle;
    FilledOval ball;
    int dx = 3, dy = 5;

    public Ball (int x, int y, int s, DrawingCanvas c, Paddle paddle){
        myCanvas = c
        ((JDrawingCanvas)c).setBackground(Color.green);
        ball = new FilledOval (x,y,s,s,c);
        pad = paddle;

        start();
    }

    public void run () //bounces the ball around
    {
        while(true){
            if(ball.getX() <0 ||ball.getX() > myCanvas.getWidth()){
            dx = dx;
        }
        if(ball.getY() <0 ||ball.getY() > myCanvas.getWidth()){
            dy = dy;
        }
        move5();
        pause(20); 
    }

    public Rectangle getRectangle(){
        return new Rectangle ((int)paddle.getX(), paddle.getY(), 
        paddle.getWidth(), paddle.getHeight();
    }

    public boolean collision (Ball p){
        return getRectangle().intersects(p.getRectangle());
    }

    public void move5(){
        ball.move(dx,dy)
    }

    public void collide(){
        dx= -dx
        dy=-dy
    }
}

請勿將擊球盒用於您的球,請檢查每一幀是否與球拍的上邊界或下邊界重疊。 如果是,則反轉球的y速度。 x軸相同。

如果球的坐標(在y軸上說)減去其半徑小於直線的y坐標,並且球的y坐標加上半徑大於框線的y坐標和球的x,則該球與直線發生碰撞。坐標+-,其半徑小於/大於線的端點的x坐標。 因此,基本上,您要檢查球是否在直線的兩端之間,並且距直線的半徑不超過直線。 如果是這樣的話,球與您的球拍的邊界碰撞了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM