初始化最终但不是invar?

时间:2012-05-29 00:22:39

标签: java boolean final

我一直在制作街机视频游戏,我需要一些关于子弹方向的帮助。现在我只有一颗不移动的子弹,它只是在它开始的地方绘制(我正在一步一步地做所有事情)。问题是我不知道子弹向右或向左的方向。我有一个名为bullet的布尔变量,当子弹被触发时(当X键被释放时)变为true。

    public void pistol( boolean right ) {

    if( right ) {
        dbg.fillRect( barrelRightX, barrelY, barrelWidth, barrelHeight );
        dbg.fillRect( handleRightX, handleY, handleWidth, handleHeight );
    }
    else {
        dbg.fillRect( barrelLeftX, barrelY, barrelWidth, barrelHeight );
        dbg.fillRect( handleLeftX, handleY, handleWidth, handleHeight );
    }

    if( bullet ) {

        if( right )
            dbg.drawOval( barrelRightX + barrelWidth, barrelY, 5, 5 );

        else
            dbg.drawOval( barrelLeftX - 5, barrelY, 5, 5 );

    }
}

if(bullet)之前的第一段代码只是为了画手枪。我把它放在那里你可以看到右边是一个布尔参数。基本上这意味着如果子弹被射击并且如果手枪朝右,那么你会画出子弹,看起来好像它正好从枪管中出来,如果子弹被射击而且它没有朝右(这显然意味着它面向左边)然后你会画它所以它看起来像它通常会出现。问题是,因为有一个巨大的动画循环来运行整个程序,当我发射子弹并改变手枪的方向(从右到左或从左到右)时,子弹会改变位置,这不应该发生。我尝试制作子弹最终版,但是当X键被释放时,我需要它来改变它。那么,有没有办法让它最终成为最终的?

1 个答案:

答案 0 :(得分:6)

final只表示无法重新分配[member]变量(或者无法扩展类和其他方法;-)。它说 nothing 关于对象的可变性。我也没有在代码中看到它的用法......

在任何情况下,为什么不创建一个新的子弹[对象] 枪被解雇时?也就是说,“方向”和“初始位置”是Bullet在创建时已知的方面。这允许产生和处理[多个独立的]子弹而不用担心不必要的交互......(1子弹只是N子弹的一个特例)。