예제 #1
0
        protected override void Update(GameTime gameTime)
        {
            if (!sound && music.State == SoundState.Playing)
            {
                music.Stop();
            }
            else if (sound && music.State != SoundState.Playing)
            {
                music.Play();
            }

            if (prevKeyboard != null && Keyboard.GetState().IsKeyDown(Keys.Escape) && prevKeyboard.IsKeyUp(Keys.Escape))
            {
                if (battlefield == null)
                {
                    Exit();
                }
                else
                {
                    battlefield = null;
                }
            }

            MouseState mouse = Mouse.GetState();

            if (battlefield != null)
            {
                battlefield.update();
            }
            else
            {
                menuTime++;
                if (menuTime >= 1200)
                {
                    menuTime = 0;
                }
                if (prevMouseState != null && prevMouseState.LeftButton == ButtonState.Released && mouse.LeftButton == ButtonState.Pressed)
                {
                    if (mouse.X / 2 >= 40 && mouse.Y / 2 >= 72 && mouse.X / 2 < 328 && mouse.Y / 2 < 92)
                    {
                        battlefield = new Battlefield();
                    }
                    else if (mouse.X / 2 >= 8 && mouse.Y / 2 >= 100 && mouse.X / 2 < 176 && mouse.Y / 2 < 120)
                    {
                        sound = !sound;
                    }
                    else if (mouse.X / 2 >= 192 && mouse.Y / 2 >= 100 && mouse.X / 2 < 360 && mouse.Y / 2 < 120)
                    {
                        Exit();
                    }
                }
                else
                {
                    for (int i = 0; i < fakeEnemies.Count; ++i)
                    {
                        fakeEnemies[i].position += fakeEnemies[i].velocity;

                        if (fakeEnemies[i].position.Y <= 8 && fakeEnemies[i].velocity.Y < 0)
                        {
                            fakeEnemies[i].velocity.Y = -fakeEnemies[i].velocity.Y;
                        }
                        else if (fakeEnemies[i].position.Y >= 52 && fakeEnemies[i].velocity.Y > 0)
                        {
                            fakeEnemies[i].velocity.Y = -fakeEnemies[i].velocity.Y;
                        }
                        else if (fakeEnemies[i].position.X <= 8 && fakeEnemies[i].velocity.X < 0)
                        {
                            fakeEnemies[i].velocity.X = -fakeEnemies[i].velocity.X;
                        }
                        else if (fakeEnemies[i].position.X >= 348 && fakeEnemies[i].velocity.X > 0)
                        {
                            fakeEnemies[i].velocity.X = -fakeEnemies[i].velocity.X;
                        }
                        else
                        {
                            double direction    = Math.Atan2(fakeEnemies[i].acceleration.Y, fakeEnemies[i].acceleration.X);
                            double newDirection = direction - 0.1 + Battlefield.rand.NextDouble() * 0.2;
                            double newLength    = -0.1 + Battlefield.rand.NextDouble() * 0.2;
                            fakeEnemies[i].acceleration = new Vector2((float)(newLength * Math.Cos(newDirection)), (float)(newLength * Math.Sin(newDirection)));

                            fakeEnemies[i].velocity += fakeEnemies[i].acceleration;
                        }
                    }
                }
            }

            prevKeyboard   = Keyboard.GetState();
            prevMouseState = mouse;
            base.Update(gameTime);
        }