0

在我们保存它以尝试将其提交给我们的编程课程之前,该代码运行良好。我们相信我们有某种内存泄漏,但无法发现它。在保存代码之前和保存一切正常之前,我们没有对代码进行任何更改,所以当我们保存它时出现了问题。以下是我们更新方法中的所有代码。我们的更新方法中的每个困难都有一个案例,这就是我们认为问题所在。

//Easy game mode
        case GameState.Easy:
            //starts backgound music
            MediaPlayer.Play(BackgroundMusic);
            this.IsMouseVisible = false;
            PlayerTwoSpeed = 5;

            if (HitCount == PointsToWin) PlayerOneWins();
            if (HitCountEnemy == PointsToWin) PlayerTwoWins();

            //getting the keyboard state, so input can be detected
            if (Keyboard.GetState().IsKeyDown(Keys.Down))
            {
                if (POPBox.Y >= 373)
                {
                    POPBox.Y += 0;
                }
                else
                {
                    POPBox.Y += PlayersSpeed;
                }
            }

            if (Keyboard.GetState().IsKeyDown(Keys.Up))
            {
                if (POPBox.Y <= 0)
                {
                    POPBox.Y += 0;
                }
                else
                {
                    POPBox.Y += -PlayersSpeed;
                }
            }
            // Ball limits

            if (BallBox.Y <= 0)
                VelocityY *= -1;
            if (BallBox.Y >= 463)
                VelocityY *= -1;

            //Collision Detection (Runs this code if it hits the player one's paddle)
            if (BallBox.Intersects(POPBox))
            {
                //Used to deflect in different directions for some veriety
                if (PlayersSpeed > 0)
                    VelocityY += 3;
                if (PlayersSpeed < 0)
                    VelocityY -= 3;
                VelocityX *= -1;
                ShockerGenerator();

                //Stopping the no slope bug. If it wants to bounce perfectly straight, it is slightly shifty to fix that error.

                if (VelocityY == 0)
                    VelocityY = VelocityY += 3;
                if (VelocityX == 0)
                    VelocityX = VelocityX += 3;

                //speed control

                if (VelocityX > 10)
                    VelocityX = 10;
                if (VelocityY > 10)
                    VelocityY = 10;
            }
            // Runs this code if the ball hits player two's paddle
            if (BallBox.Intersects(PTPBox))
            {
                VelocityX *= -1;
                if (VelocityY == 0)
                    VelocityY = VelocityY += 3;
                if (VelocityX == 0)
                    VelocityX = VelocityX += 3;
            }


            //Object a collision

            if (BallBox.Intersects(ShocObjectARectangle))
            {
                VelocityY *= -1;
            }
            if (BallBox.Intersects(ShocObjectBRectangle))
            {
                VelocityX *= -1;
            }


            // If Player One Loses

            if (BallBox.X >= 790)
            {
                PlayerOneLoses();
            }


            if (BallBox.X <= 0)
            {
                PlayerTwoLoses();

            }



            //Player Two's "AI" and limits

            if ((PTPBox.Y + 50) > BallBox.Y)
                PTPBox.Y += -PlayerTwoSpeed;
            if ((PTPBox.Y + 50) < BallBox.Y)
                PTPBox.Y += PlayerTwoSpeed;



            //Object A movement code

            ShocObjectARectangle.X += ObjectASpeed;
            if (ShocObjectARectangle.X <= 80)
                ObjectASpeed *= -1;
            else if (ShocObjectARectangle.X >= 600)
                ObjectASpeed *= -1;


            //Object B movement code

            ShocObjectBRectangle.Y += ObjectBSpeed;
            if (ShocObjectBRectangle.Y <= 0)
                ObjectBSpeed *= -1;
            else if (ShocObjectBRectangle.Y >= 415)
                ObjectBSpeed *= -1;


            // Ball Velocity

            BallBox.Y += -VelocityY;
            BallBox.X += VelocityX;
            break;
4

1 回答 1

4

看来您在每次更新滴答声时都在不断地在 MediaPlayer 中排队歌曲:

您需要将其移到您的 update() 方法之外

MediaPlayer.Play(BackgroundMusic);
于 2013-06-18T17:46:48.470 回答