在突破游戏~java中跳出桨的弹跳球

时间:2013-10-30 23:15:24

标签: java drjava

所以我正在为java中的突破游戏编写代码。现在,我进行了设置,以便它向玩家提示一个对话框,询问玩家每行需要多少砖(4到40之间的数字)。混乱的部分是与球和桨的整个碰撞。我对编程非常陌生,所以请原谅我,如果它非常容易。使用博士。 Java的。

    //-------------------------------  animate -------------------------
    /**
     * this should send the ball back after hitting the paddle.
     * 
     */ 
    public void animate( )
    {
            int dX = ball.getXLocation( ); 
            int dY = ball.getYLocation( );
            while( true )
            {

            ball.move( );
            if ( ball.boundsIntersects( paddle) ) 
            {

                dY= -1*dY;
                ball.setLocation( dX,dY );


            }

            for(int i = 0; i < bricks.size(); i++)
            {

            if (ball.boundsIntersects(bricks.get(i)))
            {


                dY = -dY;
                ball.setLocation(dX,dY);
                bricks.get(i).hide();
                bricks.remove(i);
                System.out.println("brick");
            }

}

这是我的球类的移动方法。再次抱歉可怕的代码。

//-------------------------------  move ----------------------------
    /**
     * This will move the ball by deltaX and deltaY
     * and bounce the ball off the edges of the Frame.
     * 
     */ 

    public void move( ) 
    {

        int dX = this.getXLocation( ) + deltaX;
        int dY = this.getYLocation( ) + deltaY;
        this.setLocation( dX, dY );
        if( getYLocation( ) < 0 )
        {
            setLocation( dX, 0 );
            deltaY *=-1;
        }
        else if( getYLocation( ) > ( 500 + size ) )
        {
            setLocation( dX, 500-size);
            deltaY *=-1;
        }
        if( getXLocation() < 0 )
        {
            setLocation( dX , dY );
            deltaX *=-1;
        }
        else if( getXLocation( ) > ( 500 + size ) )
        {
            setLocation( 500-size, dY );
            deltaX *=-1;
        }

   }    

1 个答案:

答案 0 :(得分:0)

在你的animate()函数中,你将球的Y值设置为与它碰撞时的负值。我认为你的意思是将它的“deltaY”设置为负值,就像你在move()函数中那样。你的变量名是“dY”,但看起来就像是Y.

击球时球的当前行为是什么?它碰到块时是否也有同样的奇怪行为?看起来你在代码中执行相同的-Y检查它何时到达块。

编辑: 看起来像这段代码:

        if ( ball.boundsIntersects( paddle) ) 
        {
            dY= -1*dY;
            ball.setLocation( dX,dY );
        }

应改为:

if ( ball.boundsIntersects( paddle) ) 
{
    ball.deltaY = -ball.deltaY;
}

这里也一样:

if (ball.boundsIntersects(bricks.get(i)))
{
    dY = -dY;
    ball.setLocation(dX,dY);
    bricks.get(i).hide();
    bricks.remove(i);
    System.out.println("brick");
 }

为:

if (ball.boundsIntersects(bricks.get(i)))
{
    ball.deltaY = -ball.deltaY;
    bricks.get(i).hide();
    bricks.remove(i);
    System.out.println("brick");
 }

如果它解决了您的问题,请不要忘记将其标记为已解答。