在我们保存代码之前,代码工作得非常漂亮,并尝试将其提交给我们的编程课程。我们认为我们有某种内存泄漏,但无法发现它。在保存之前我们没有对代码进行任何更改,在保存之前一切都很好,所以当我们保存它时出错了。下面是我们更新方法中的所有代码。我们在更新方法中遇到了每个难题的情况,这是我们认为问题所在。
//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;
答案 0 :(得分:4)
在每次更新时,您似乎都在不断排队MediaPlayer中的歌曲:
您需要将其移到update()方法之外
MediaPlayer.Play(BackgroundMusic);