Ejemplo n.º 1
0
 public override void Update()
 {
     if (waitCount > 0)
     {
         double newX = waitX + swingWidth * Utility.Sin(Game.Ticks * 8);
         double newY = waitY + swingHeight * Utility.Sin(Game.Ticks * 8);
         vx = newX - X;
         vy = newY - Y;
         X  = newX;
         Y  = newY;
         waitCount--;
     }
     if (waitCount == 0)
     {
         if (!attacking)
         {
             if (angle == 90)
             {
                 angle += Game.Random.Next(2) == 0 ? 1 : -1;
             }
             else
             {
                 int deg = Utility.NormalizeDeg(270 - angle);
                 if (Math.Abs(deg) < 8)
                 {
                     angle     = 270;
                     attacking = true;
                 }
                 else
                 {
                     if (deg < 0)
                     {
                         angle -= 8;
                     }
                     else if (deg > 0)
                     {
                         angle += 8;
                     }
                 }
             }
             vx += 0.5 * Utility.Cos(angle);
             vy -= 0.5 * Utility.Sin(angle);
             Move();
         }
         else
         {
             if (X < Game.Player.X + playerXTraceOffset)
             {
                 vx += 0.25;
             }
             else if (X > Game.Player.X + playerXTraceOffset)
             {
                 vx -= 0.25;
             }
             vy += 0.25;
             Move();
             {
                 int deg = Utility.NormalizeDeg(Utility.Atan2(Y - Game.Player.Y, Game.Player.X - X) - angle);
                 if (deg == -180)
                 {
                     angle += Game.Random.Next(2) == 0 ? 1 : -1;
                 }
                 else if (Math.Abs(deg) < 4)
                 {
                     angle = Utility.Atan2(Y - Game.Player.Y, Game.Player.X - X);
                 }
                 else
                 {
                     if (deg < 0)
                     {
                         angle -= 4;
                     }
                     else if (deg > 0)
                     {
                         angle += 4;
                     }
                 }
             }
             if (fireCount > 0)
             {
                 fireCount--;
             }
             else if (!Game.Player.IsDead)
             {
                 if (Y < Game.Player.Y)
                 {
                     Bullet bullet = new EnemyBullet(Game, X + 32 * Utility.Cos(angle), Y - 32 * Utility.Sin(angle), 12, angle);
                     Game.AddEnemyBullet(bullet);
                     Game.PlaySound(Sound.EnemyFire);
                     fireCount          = Game.Random.Next(30, 60);
                     playerXTraceOffset = Game.Random.Next(-64, 64 + 1);
                 }
                 else
                 {
                     fireCount          = Game.Random.Next(15, 30);
                     playerXTraceOffset = Game.Random.Next(-64, 64 + 1);
                 }
             }
         }
     }
 }
Ejemplo n.º 2
0
 public override void Update()
 {
     if (waitCount > 0)
     {
         double newX = waitX + swingWidth * Utility.Sin(Game.Ticks * 8);
         double newY = waitY + swingHeight * Utility.Sin(Game.Ticks * 8);
         vx = newX - X;
         vy = newY - Y;
         X = newX;
         Y = newY;
         waitCount--;
     }
     if (waitCount == 0)
     {
         if (!attacking)
         {
             if (angle == 90)
             {
                 angle += Game.Random.Next(2) == 0 ? 1 : -1;
             }
             else
             {
                 int deg = Utility.NormalizeDeg(270 - angle);
                 if (Math.Abs(deg) < 8)
                 {
                     angle = 270;
                     attacking = true;
                 }
                 else
                 {
                     if (deg < 0)
                     {
                         angle -= 8;
                     }
                     else if (deg > 0)
                     {
                         angle += 8;
                     }
                 }
             }
             vx += 0.5 * Utility.Cos(angle);
             vy -= 0.5 * Utility.Sin(angle);
             Move();
         }
         else
         {
             if (X < Game.Player.X + playerXTraceOffset)
             {
                 vx += 0.25;
             }
             else if (X > Game.Player.X + playerXTraceOffset)
             {
                 vx -= 0.25;
             }
             vy += 0.25;
             Move();
             {
                 int deg = Utility.NormalizeDeg(Utility.Atan2(Y - Game.Player.Y, Game.Player.X - X) - angle);
                 if (deg == -180)
                 {
                     angle += Game.Random.Next(2) == 0 ? 1 : -1;
                 }
                 else if (Math.Abs(deg) < 4)
                 {
                     angle = Utility.Atan2(Y - Game.Player.Y, Game.Player.X - X);
                 }
                 else
                 {
                     if (deg < 0)
                     {
                         angle -= 4;
                     }
                     else if (deg > 0)
                     {
                         angle += 4;
                     }
                 }
             }
             if (fireCount > 0)
             {
                 fireCount--;
             }
             else if (!Game.Player.IsDead)
             {
                 if (Y < Game.Player.Y)
                 {
                     Bullet bullet = new EnemyBullet(Game, X + 32 * Utility.Cos(angle), Y - 32 * Utility.Sin(angle), 12, angle);
                     Game.AddEnemyBullet(bullet);
                     Game.PlaySound(Sound.EnemyFire);
                     fireCount = Game.Random.Next(30, 60);
                     playerXTraceOffset = Game.Random.Next(-64, 64 + 1);
                 }
                 else
                 {
                     fireCount = Game.Random.Next(15, 30);
                     playerXTraceOffset = Game.Random.Next(-64, 64 + 1);
                 }
             }
         }
     }
 }
Ejemplo n.º 3
0
 public override void Update()
 {
     if (waitCount > 0)
     {
         double newX = waitX + swingWidth * Utility.Sin(Game.Ticks * 8);
         double newY = waitY + swingHeight * Utility.Sin(Game.Ticks * 8);
         vx = newX - X;
         vy = newY - Y;
         X = newX;
         Y = newY;
         waitCount--;
     }
     if (waitCount == 0)
     {
         if (!attacking)
         {
             if (angle == 90)
             {
                 angle += Game.Random.Next(2) == 0 ? 1 : -1;
             }
             else
             {
                 int deg = Utility.NormalizeDeg(270 - angle);
                 if (Math.Abs(deg) < 8)
                 {
                     angle = 270;
                     attacking = true;
                 }
                 else
                 {
                     if (deg < 0)
                     {
                         angle -= 8;
                     }
                     else if (deg > 0)
                     {
                         angle += 8;
                     }
                 }
             }
             vx += 0.5 * Utility.Cos(angle);
             vy -= 0.5 * Utility.Sin(angle);
             Move();
         }
         else
         {
             PlayerBullet playerBullet = null;
             foreach (PlayerBullet targetBullet in Game.PlayerBulletList)
             {
                 if (Math.Abs(targetBullet.X - X) < 32)
                 {
                     if (Y < targetBullet.Y && targetBullet.Y - 128 < Y)
                     {
                         if (playerBullet == null || targetBullet.Y < playerBullet.Y)
                         {
                             playerBullet = targetBullet;
                         }
                     }
                 }
             }
             if (playerBullet == null)
             {
                 if (X < Game.Player.X + playerXTraceOffset)
                 {
                     vx += 0.5;
                 }
                 else if (X > Game.Player.X + playerXTraceOffset)
                 {
                     vx -= 0.5;
                 }
             }
             else
             {
                 if (X < playerBullet.X)
                 {
                     vx -= 3;
                 }
                 else if (X > playerBullet.X)
                 {
                     vx += 3;
                 }
             }
             vy += 0.25;
             Move();
             {
                 int deg = Utility.NormalizeDeg(Utility.Atan2(Y - Game.Player.Y, Game.Player.X - X) - angle);
                 if (deg == -180)
                 {
                     angle += Game.Random.Next(2) == 0 ? 1 : -1;
                 }
                 else if (Math.Abs(deg) < 2)
                 {
                     angle = Utility.Atan2(Y - Game.Player.Y, Game.Player.X - X);
                 }
                 else
                 {
                     if (deg < 0)
                     {
                         angle -= 2;
                     }
                     else if (deg > 0)
                     {
                         angle += 2;
                     }
                 }
                 angle = (angle % 360 + 360) % 360;
                 if (angle < 225)
                 {
                     angle = 225;
                 }
                 else if (angle > 315)
                 {
                     angle = 315;
                 }
             }
             if (fireCount > 0)
             {
                 fireCount--;
             }
             else if (!Game.Player.IsDead)
             {
                 if (Y < Game.Player.Y)
                 {
                     Bullet bullet = new EnemyBullet(Game, X + 32 * Utility.Cos(angle), Y - 32 * Utility.Sin(angle), 12, angle);
                     Game.AddEnemyBullet(bullet);
                     Game.PlaySound(Sound.EnemyFire);
                     fireCount = Game.Random.Next(60, 90);
                     playerXTraceOffset = Game.Random.Next(-32, 32 + 1);
                 }
                 else
                 {
                     fireCount = Game.Random.Next(15, 30);
                     playerXTraceOffset = Game.Random.Next(-32, 32 + 1);
                 }
             }
         }
     }
     damaged = false;
 }
Ejemplo n.º 4
0
 public override void Update()
 {
     if (waitCount > 0)
     {
         double newX = waitX + swingWidth * Utility.Sin(Game.Ticks * 8);
         double newY = waitY + swingHeight * Utility.Sin(Game.Ticks * 8);
         vx = newX - X;
         vy = newY - Y;
         X  = newX;
         Y  = newY;
         waitCount--;
     }
     if (waitCount == 0)
     {
         if (!attacking)
         {
             if (angle == 90)
             {
                 angle += Game.Random.Next(2) == 0 ? 1 : -1;
             }
             else
             {
                 int deg = Utility.NormalizeDeg(270 - angle);
                 if (Math.Abs(deg) < 8)
                 {
                     angle     = 270;
                     attacking = true;
                 }
                 else
                 {
                     if (deg < 0)
                     {
                         angle -= 8;
                     }
                     else if (deg > 0)
                     {
                         angle += 8;
                     }
                 }
             }
             vx += 0.5 * Utility.Cos(angle);
             vy -= 0.5 * Utility.Sin(angle);
             Move();
         }
         else
         {
             PlayerBullet playerBullet = null;
             foreach (PlayerBullet targetBullet in Game.PlayerBulletList)
             {
                 if (Math.Abs(targetBullet.X - X) < 32)
                 {
                     if (Y < targetBullet.Y && targetBullet.Y - 128 < Y)
                     {
                         if (playerBullet == null || targetBullet.Y < playerBullet.Y)
                         {
                             playerBullet = targetBullet;
                         }
                     }
                 }
             }
             if (playerBullet == null)
             {
                 if (X < Game.Player.X + playerXTraceOffset)
                 {
                     vx += 0.5;
                 }
                 else if (X > Game.Player.X + playerXTraceOffset)
                 {
                     vx -= 0.5;
                 }
             }
             else
             {
                 if (X < playerBullet.X)
                 {
                     vx -= 3;
                 }
                 else if (X > playerBullet.X)
                 {
                     vx += 3;
                 }
             }
             vy += 0.25;
             Move();
             {
                 int deg = Utility.NormalizeDeg(Utility.Atan2(Y - Game.Player.Y, Game.Player.X - X) - angle);
                 if (deg == -180)
                 {
                     angle += Game.Random.Next(2) == 0 ? 1 : -1;
                 }
                 else if (Math.Abs(deg) < 2)
                 {
                     angle = Utility.Atan2(Y - Game.Player.Y, Game.Player.X - X);
                 }
                 else
                 {
                     if (deg < 0)
                     {
                         angle -= 2;
                     }
                     else if (deg > 0)
                     {
                         angle += 2;
                     }
                 }
                 angle = (angle % 360 + 360) % 360;
                 if (angle < 225)
                 {
                     angle = 225;
                 }
                 else if (angle > 315)
                 {
                     angle = 315;
                 }
             }
             if (fireCount > 0)
             {
                 fireCount--;
             }
             else if (!Game.Player.IsDead)
             {
                 if (Y < Game.Player.Y)
                 {
                     Bullet bullet = new EnemyBullet(Game, X + 32 * Utility.Cos(angle), Y - 32 * Utility.Sin(angle), 12, angle);
                     Game.AddEnemyBullet(bullet);
                     Game.PlaySound(Sound.EnemyFire);
                     fireCount          = Game.Random.Next(60, 90);
                     playerXTraceOffset = Game.Random.Next(-32, 32 + 1);
                 }
                 else
                 {
                     fireCount          = Game.Random.Next(15, 30);
                     playerXTraceOffset = Game.Random.Next(-32, 32 + 1);
                 }
             }
         }
     }
     damaged = false;
 }
Ejemplo n.º 5
0
 public override void Update()
 {
     if (waitCount > 0)
     {
         double newX = waitX + swingWidth * Utility.Sin(Game.Ticks * 8);
         double newY = waitY + swingHeight * Utility.Sin(Game.Ticks * 8);
         vx = newX - X;
         vy = newY - Y;
         X  = newX;
         Y  = newY;
         waitCount--;
     }
     if (waitCount == 0)
     {
         if (!attacking)
         {
             if (angle == 90)
             {
                 angle += Game.Random.Next(2) == 0 ? 1 : -1;
             }
             else
             {
                 int deg = Utility.NormalizeDeg(270 - angle);
                 if (Math.Abs(deg) < 8)
                 {
                     angle     = 270;
                     attacking = true;
                 }
                 else
                 {
                     if (deg < 0)
                     {
                         angle -= 8;
                     }
                     else if (deg > 0)
                     {
                         angle += 8;
                     }
                 }
             }
             vx += 0.5 * Utility.Cos(angle);
             vy -= 0.5 * Utility.Sin(angle);
             Move();
         }
         else
         {
             if (X < Game.Player.X + playerXTraceOffset)
             {
                 vx += 0.25;
             }
             else if (X > Game.Player.X + playerXTraceOffset)
             {
                 vx -= 0.25;
             }
             vy += 0.25;
             Move();
             {
                 int deg = Utility.NormalizeDeg(Utility.Atan2(Y - Game.Player.Y, Game.Player.X - X) - angle);
                 if (deg == -180)
                 {
                     angle += Game.Random.Next(2) == 0 ? 1 : -1;
                 }
                 else if (Math.Abs(deg) < 2)
                 {
                     angle = Utility.Atan2(Y - Game.Player.Y, Game.Player.X - X);
                 }
                 else
                 {
                     if (deg < 0)
                     {
                         angle -= 2;
                     }
                     else if (deg > 0)
                     {
                         angle += 2;
                     }
                 }
                 angle = (angle % 360 + 360) % 360;
                 if (angle < 225)
                 {
                     angle = 225;
                 }
                 else if (angle > 315)
                 {
                     angle = 315;
                 }
             }
             if (fireCount > 0)
             {
                 fireCount--;
             }
             else if (!Game.Player.IsDead)
             {
                 if (Y < Game.Player.Y)
                 {
                     Bullet bullet1 = new EnemyBullet(Game, X + 32 * Utility.Cos(angle), Y - 32 * Utility.Sin(angle), 8, angle - 15);
                     Bullet bullet2 = new EnemyBullet(Game, X + 32 * Utility.Cos(angle), Y - 32 * Utility.Sin(angle), 8, angle);
                     Bullet bullet3 = new EnemyBullet(Game, X + 32 * Utility.Cos(angle), Y - 32 * Utility.Sin(angle), 8, angle + 15);
                     Game.AddEnemyBullet(bullet1);
                     Game.AddEnemyBullet(bullet2);
                     Game.AddEnemyBullet(bullet3);
                     Game.PlaySound(Sound.EnemyFire);
                     fireCount          = Game.Random.Next(60, 120);
                     playerXTraceOffset = Game.Random.Next(-96, 96 + 1);
                 }
                 else
                 {
                     fireCount          = Game.Random.Next(60, 120);
                     playerXTraceOffset = Game.Random.Next(-96, 96 + 1);
                 }
             }
         }
     }
     damaged = false;
 }
Ejemplo n.º 6
0
 public override void Update()
 {
     if (waitCount > 0)
     {
         double newX = waitX + swingWidth * Utility.Sin(Game.Ticks * 8);
         double newY = waitY + swingHeight * Utility.Sin(Game.Ticks * 8);
         vx = newX - X;
         vy = newY - Y;
         X = newX;
         Y = newY;
         waitCount--;
     }
     if (waitCount == 0)
     {
         if (!attacking)
         {
             if (angle == 90)
             {
                 angle += Game.Random.Next(2) == 0 ? 1 : -1;
             }
             else
             {
                 int deg = Utility.NormalizeDeg(270 - angle);
                 if (Math.Abs(deg) < 8)
                 {
                     angle = 270;
                     attacking = true;
                 }
                 else
                 {
                     if (deg < 0)
                     {
                         angle -= 8;
                     }
                     else if (deg > 0)
                     {
                         angle += 8;
                     }
                 }
             }
             vx += 0.5 * Utility.Cos(angle);
             vy -= 0.5 * Utility.Sin(angle);
             Move();
         }
         else
         {
             if (X < Game.Player.X + playerXTraceOffset)
             {
                 vx += 0.25;
             }
             else if (X > Game.Player.X + playerXTraceOffset)
             {
                 vx -= 0.25;
             }
             vy += 0.25;
             Move();
             {
                 int deg = Utility.NormalizeDeg(Utility.Atan2(Y - Game.Player.Y, Game.Player.X - X) - angle);
                 if (deg == -180)
                 {
                     angle += Game.Random.Next(2) == 0 ? 1 : -1;
                 }
                 else if (Math.Abs(deg) < 2)
                 {
                     angle = Utility.Atan2(Y - Game.Player.Y, Game.Player.X - X);
                 }
                 else
                 {
                     if (deg < 0)
                     {
                         angle -= 2;
                     }
                     else if (deg > 0)
                     {
                         angle += 2;
                     }
                 }
                 angle = (angle % 360 + 360) % 360;
                 if (angle < 225)
                 {
                     angle = 225;
                 }
                 else if (angle > 315)
                 {
                     angle = 315;
                 }
             }
             if (fireCount > 0)
             {
                 fireCount--;
             }
             else if (!Game.Player.IsDead)
             {
                 if (Y < Game.Player.Y)
                 {
                     Bullet bullet1 = new EnemyBullet(Game, X + 32 * Utility.Cos(angle), Y - 32 * Utility.Sin(angle), 8, angle - 15);
                     Bullet bullet2 = new EnemyBullet(Game, X + 32 * Utility.Cos(angle), Y - 32 * Utility.Sin(angle), 8, angle);
                     Bullet bullet3 = new EnemyBullet(Game, X + 32 * Utility.Cos(angle), Y - 32 * Utility.Sin(angle), 8, angle + 15);
                     Game.AddEnemyBullet(bullet1);
                     Game.AddEnemyBullet(bullet2);
                     Game.AddEnemyBullet(bullet3);
                     Game.PlaySound(Sound.EnemyFire);
                     fireCount = Game.Random.Next(60, 120);
                     playerXTraceOffset = Game.Random.Next(-96, 96 + 1);
                 }
                 else
                 {
                     fireCount = Game.Random.Next(60, 120);
                     playerXTraceOffset = Game.Random.Next(-96, 96 + 1);
                 }
             }
         }
     }
     damaged = false;
 }