0

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

    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) 之前的第一段代码只是画手枪。我把它放在那里,这样你就可以看到 right 是一个布尔参数。基本上这意味着如果子弹已经发射并且手枪朝右,那么您将绘制子弹,这样它看起来就好像它是从枪管中出来的一样,如果子弹已经发射并且它没有朝右(这显然意味着它朝左)然后你会画它,所以它看起来就像它通常会那样出来。问题是,由于运行整个程序有一个巨大的动画循环,所以当我发射子弹并改变手枪的方向(从右到左或从左到右)时,子弹会改变位置,这不应该发生。我尝试制作子弹最终,但我需要它在释放 X 键时变为真时进行更改。所以,

4

1 回答 1

6

final只说不能重新分配 [member] 变量(或者不能扩展类以及有关方法的其他内容;-)。它没有说明对象的可变性。我也没有在代码中看到它的用法......

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

于 2012-05-29T00:28:25.317 回答