-4

基本的に、私はパドルボールとレンガを使ったシンプルなブリックブレーカーゲームをしています。

私はこのコードで生活を設定しました:

protected override void Update(GameTime gameTime)
    {

        if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
            this.Exit();

        paddle.Update();
        ball.Update();

        foreach (Brick brick in bricks)
        {
            score += brick.CheckCollision(ball);
        }

        ball.PaddleCollision(paddle.GetBounds());

        if (ball.OffBottom())
        {
            --lives;
            if (lives == 0)

                StartGame();
            base.Update(gameTime);
        }
    }

私が得ている問題は、一度に 3 つの命を失っていることです。この部分をかなり調整しましたが、まだ機能していません。

これは簡単な修正だと思いますが、プログラミングを始めたばかりです。私はC#の生活などのためにGoogleを試しましたが、ゲーム・オブ・ライフと呼ばれるゲームが次々と出てきて、その方法で欲しいものを手に入れることができません。どんな助けでも大歓迎です!

これが全体の方法です。

protected override void Update(GameTime gameTime) 
{ 

    if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
        this.Exit(); 

    paddle.Update(); 
    ball.Update(); 

    foreach (Brick brick in bricks) 
    { 
        score += brick.CheckCollision(ball); 
    } 

    ball.PaddleCollision(paddle.GetBounds()); 

    if (ball.OffBottom()) 
    { 
        --lives; 

        if (lives == 0) 
            StartGame(); 

        base.Update(gameTime); 
    } 
}
4

1 に答える 1

2

以前にこの問題に直面したことがありますが、一般的な解決策は次のとおりです。

  • ボールがレンガに衝突したとき > ライフから 1 を引くと...
  • ...タイマーを開始し、10 ミリ秒などのしきい値を設定します
  • 次に、次のようなものif ball intersects brick and timer <= threshold, dont subtract from lives
  • 次に、タイマーがしきい値に達したら > タイマーをリセットし、ライフを再び減らすことができるようにします

残念ながらコードの解決策はありませんが、この疑似コードは問題を解決するのに十分すぎるほどです

于 2013-04-17T15:44:18.357 に答える