Beispiel #1
0
 override public bool CollidesWith(Entity e)
 {
     if (Intersects(e))
     {
         active = false; // the asteroid gets destroyed
         Explosion.Spawn(Astro.Instance.animations["explosion_asteroid"], x, y);
         if (anim.r > 30)
         {
             Astro.Instance.score += 10;
             Astro.Instance.sounds["bang_lg"].Play();
             Spawn(Astro.Instance.animations["asteroid_md"], x, y);
             Spawn(Astro.Instance.animations["asteroid_md"], x, y);
         }
         else if (anim.r > 20)
         {
             Astro.Instance.score += 20;
             Astro.Instance.sounds["bang_md"].Play();
             Spawn(Astro.Instance.animations["asteroid_sm"], x, y);
             Spawn(Astro.Instance.animations["asteroid_sm"], x, y);
         }
         else
         {
             Astro.Instance.score += 30;
             Astro.Instance.sounds["bang_sm"].Play();
         }
         return(true);
     }
     return(false);
 }
Beispiel #2
0
 override public bool CollidesWith(Entity e)
 {
     if (!hidden && Intersects(e))
     {
         Astro.Instance.score += 50;
         Explosion.Spawn(Astro.Instance.animations["explosion_ship"], x, y);
         Astro.Instance.sounds["bang_lg"].Play();
         Hide();
         return(true);
     }
     return(false);
 }
Beispiel #3
0
        override public void CheckCollisions()
        {
            foreach (Entity e in Astro.Instance.currentEntities)
            {
                if (e.CollidesWith(this))
                {
                    Explosion.Spawn(Astro.Instance.animations["explosion_ship"], x, y);
                    Astro.Instance.sounds["bang_lg"].Play();
                    x  = Astro.Instance.WIDTH * 0.5; // reset the ship to the center of the screen
                    y  = Astro.Instance.HEIGHT * 0.5;
                    dx = dy = 0;                     // stop the ship's movement

                    if (--extraShips < 0)
                    {
                        Astro.Instance.saucer.Hide();
                        Astro.Instance.gameState = (Astro.Instance.score > HighScores.Instance.lowestHighScore) ?
                                                   Astro.GameState.GAMEOVER : // prompt for player's name
                                                   Astro.GameState.READY;     // show high scores
                    }
                }
            }
        }