Exemple #1
0
 private void HandleKeyboard()
 {
     if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.Escape))
     {
         Exit();
     }
     PresentKey = Keyboard.GetState();
     if (PresentKey.IsKeyDown(Keys.OemMinus) && PastKey.IsKeyUp(Keys.OemMinus))
     {
         DecreaseSpeed();
     }
     if (PresentKey.IsKeyDown(Keys.OemPlus) && PastKey.IsKeyUp(Keys.OemPlus))
     {
         IncreaseSpeed();
     }
     PastKey = PresentKey;
 }
Exemple #2
0
        protected override void Update(GameTime gameTime)
        {
            // Allows the game to exit
            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
            {
                this.Exit();
            }

            //Выход из игры...
            //Читать буфер клавиатуры
            keyboardState = Keyboard.GetState();

            if (keyboardState.IsKeyDown(Keys.OemPlus) && PastKey.IsKeyUp(Keys.OemPlus))
            {
                if (MediaPlayer.State != MediaState.Playing)
                {
                    //Если проигрывание "на паузе"
                    if (MediaPlayer.State == MediaState.Paused)
                    {
                        //Возобновим проигрывание
                        MediaPlayer.Resume();
                    }
                    //Если проигрывание остановлено
                    if (MediaPlayer.State == MediaState.Stopped)
                    {
                        //Начнём проигрывание с начала композиции
                        MediaPlayer.Play(MainMusic);
                    }
                }
                else
                {
                    MediaPlayer.Pause();
                }
            }

            //Если menuState == true, то отображаем меню,
            //Если menuState == false, отображаем игровой процесс
            if (menuState)
            {
                //Отслеживаем управление клавиатурой:
                //Обработчик нажатия клавиши Вверх
                if (keyboardState.IsKeyDown(Keys.Up) && PastKey.IsKeyUp(Keys.Up))
                {
                    //Проигрывание звука переключения кнопки меню
                    menu.soundEffect.Play();
                    //Смена текущего элемента меню
                    buttonState = (buttonState + 2) % 3;
                }

                //Обработчик нажатия клавиши Вниз
                if (keyboardState.IsKeyDown(Keys.Down) && PastKey.IsKeyUp(Keys.Down))
                {
                    //Проигрывание звука переключения кнопки меню
                    menu.soundEffect.Play();
                    //Смена текущего элемента меню
                    buttonState = (buttonState + 1) % 3;
                }

                //Обработчик нажатия клавиши Enter на пункте меню "Игра"
                if (buttonState == 0 && keyboardState.IsKeyDown(Keys.Enter) && PastKey.IsKeyUp(Keys.Enter))
                {
                    if (Level == 1)
                    {
                        Boss[1].Visible = false;
                        Boss[3].Visible = false;
                        Boss[5].Visible = false;
                        Boss[7].Visible = false;
                    }
                    else if (Level == 2)
                    {
                        Boss[1].Visible = true;
                        Boss[3].Visible = true;
                        Boss[5].Visible = true;
                        Boss[7].Visible = true;
                    }

                    //Если нужно начать новую игру, то обнуляем счет, время и тд.
                    if (menu.IsNewGame && Level == 1)
                    {
                        menu.IsNewGame = false;

                        for (int i = 0; i < Boss.Count; i++)
                        {
                            Boss[i].numberOfFrame = 11;
                        }
                        Score     = 0;
                        GameTimer = 15;
                        GameAim   = 15;
                    }

                    if (menu.IsNewGame && Level == 2)
                    {
                        menu.IsNewGame = false;

                        for (int i = 0; i < Boss.Count; i++)
                        {
                            Boss[i].numberOfFrame = 11;
                        }

                        Score     = 0;
                        GameTimer = 10;
                        GameAim   = 30;
                    }
                    //Если menuState == true, то отображаем меню,
                    //Если menuState == false, отображаем игровой процесс
                    menuState   = false;
                    gameProcess = true;
                }
                //Обработчик нажатия клавиши Enter на пункте меню "Счет"
                if (buttonState == 1 && keyboardState.IsKeyDown(Keys.Enter) && PastKey.IsKeyUp(Keys.Enter))
                {
                    ScoreBoardList = true;
                }
                //Обработчик нажатия клавиши Enter на пункте меню "Выход"
                if (buttonState == 2 && keyboardState.IsKeyDown(Keys.Enter) && PastKey.IsKeyUp(Keys.Enter))
                {
                    //Выход
                    this.Exit();
                }

                if (keyboardState.IsKeyDown(Keys.Escape) && PastKey.IsKeyUp(Keys.Escape) && !menu.IsNewGame)
                {
                    //Если menuState == true, то отображаем меню,
                    //Если menuState == false, отображаем игровой процесс
                    menuState   = false;
                    gameProcess = true;
                }
            }

            if (ScoreBoardList)
            {
                buttonState = 4;

                ResultList            = GetResult();
                menu.ScoreBoardString = "";
                for (int i = 0; i < ResultList.Count && i < 6; i++)
                {
                    menu.ScoreBoardString += ResultList[i] + "\n";
                }

                if (keyboardState.IsKeyDown(Keys.Escape) && PastKey.IsKeyUp(Keys.Escape))
                {
                    buttonState    = 0;
                    ScoreBoardList = false;
                    menuState      = true;
                }
            }

            if (scoreState)
            {
                buttonState = 3;
                if (keyboardState.IsKeyDown(Keys.Enter) && PastKey.IsKeyUp(Keys.Enter))
                {
                    if (PlayerName != "")
                    {
                        SaveResult(PlayerName, Score);
                    }

                    buttonState = 0;
                    scoreState  = false;
                }
                if (keyboardState.IsKeyDown(Keys.Escape) && PastKey.IsKeyUp(Keys.Escape))
                {
                    buttonState = 0;
                    scoreState  = false;
                }
                if (keyboardState.IsKeyDown(Keys.Back) && PastKey.IsKeyUp(Keys.Back))
                {
                    if (PlayerName.Length != 0)
                    {
                        PlayerName = PlayerName.Remove(PlayerName.Length - 1);
                    }
                }

                if (PlayerName.Length < 9)
                {
                    if (keyboardState.IsKeyDown(Keys.A) && PastKey.IsKeyUp(Keys.A))
                    {
                        PlayerName = PlayerName + "Ф";
                    }
                    if (keyboardState.IsKeyDown(Keys.B) && PastKey.IsKeyUp(Keys.B))
                    {
                        PlayerName = PlayerName + "И";
                    }
                    if (keyboardState.IsKeyDown(Keys.C) && PastKey.IsKeyUp(Keys.C))
                    {
                        PlayerName = PlayerName + "С";
                    }
                    if (keyboardState.IsKeyDown(Keys.D) && PastKey.IsKeyUp(Keys.D))
                    {
                        PlayerName = PlayerName + "В";
                    }
                    if (keyboardState.IsKeyDown(Keys.E) && PastKey.IsKeyUp(Keys.E))
                    {
                        PlayerName = PlayerName + "У";
                    }
                    if (keyboardState.IsKeyDown(Keys.F) && PastKey.IsKeyUp(Keys.F))
                    {
                        PlayerName = PlayerName + "А";
                    }
                    if (keyboardState.IsKeyDown(Keys.G) && PastKey.IsKeyUp(Keys.G))
                    {
                        PlayerName = PlayerName + "П";
                    }
                    if (keyboardState.IsKeyDown(Keys.H) && PastKey.IsKeyUp(Keys.H))
                    {
                        PlayerName = PlayerName + "Р";
                    }
                    if (keyboardState.IsKeyDown(Keys.I) && PastKey.IsKeyUp(Keys.I))
                    {
                        PlayerName = PlayerName + "Ш";
                    }
                    if (keyboardState.IsKeyDown(Keys.J) && PastKey.IsKeyUp(Keys.J))
                    {
                        PlayerName = PlayerName + "О";
                    }
                    if (keyboardState.IsKeyDown(Keys.K) && PastKey.IsKeyUp(Keys.K))
                    {
                        PlayerName = PlayerName + "Л";
                    }
                    if (keyboardState.IsKeyDown(Keys.L) && PastKey.IsKeyUp(Keys.L))
                    {
                        PlayerName = PlayerName + "Д";
                    }
                    if (keyboardState.IsKeyDown(Keys.M) && PastKey.IsKeyUp(Keys.M))
                    {
                        PlayerName = PlayerName + "Ь";
                    }
                    if (keyboardState.IsKeyDown(Keys.N) && PastKey.IsKeyUp(Keys.N))
                    {
                        PlayerName = PlayerName + "Т";
                    }
                    if (keyboardState.IsKeyDown(Keys.O) && PastKey.IsKeyUp(Keys.O))
                    {
                        PlayerName = PlayerName + "Щ";
                    }
                    if (keyboardState.IsKeyDown(Keys.P) && PastKey.IsKeyUp(Keys.P))
                    {
                        PlayerName = PlayerName + "З";
                    }
                    if (keyboardState.IsKeyDown(Keys.Q) && PastKey.IsKeyUp(Keys.Q))
                    {
                        PlayerName = PlayerName + "Й";
                    }
                    if (keyboardState.IsKeyDown(Keys.R) && PastKey.IsKeyUp(Keys.R))
                    {
                        PlayerName = PlayerName + "К";
                    }
                    if (keyboardState.IsKeyDown(Keys.S) && PastKey.IsKeyUp(Keys.S))
                    {
                        PlayerName = PlayerName + "Ы";
                    }
                    if (keyboardState.IsKeyDown(Keys.T) && PastKey.IsKeyUp(Keys.T))
                    {
                        PlayerName = PlayerName + "Е";
                    }
                    if (keyboardState.IsKeyDown(Keys.U) && PastKey.IsKeyUp(Keys.U))
                    {
                        PlayerName = PlayerName + "Г";
                    }
                    if (keyboardState.IsKeyDown(Keys.V) && PastKey.IsKeyUp(Keys.V))
                    {
                        PlayerName = PlayerName + "М";
                    }
                    if (keyboardState.IsKeyDown(Keys.W) && PastKey.IsKeyUp(Keys.W))
                    {
                        PlayerName = PlayerName + "Ц";
                    }
                    if (keyboardState.IsKeyDown(Keys.X) && PastKey.IsKeyUp(Keys.X))
                    {
                        PlayerName = PlayerName + "Ч";
                    }
                    if (keyboardState.IsKeyDown(Keys.Y) && PastKey.IsKeyUp(Keys.Y))
                    {
                        PlayerName = PlayerName + "Н";
                    }
                    if (keyboardState.IsKeyDown(Keys.Z) && PastKey.IsKeyUp(Keys.Z))
                    {
                        PlayerName = PlayerName + "Я";
                    }
                    if (keyboardState.IsKeyDown(Keys.OemSemicolon) && PastKey.IsKeyUp(Keys.OemSemicolon))
                    {
                        PlayerName = PlayerName + "Ж";
                    }
                    if (keyboardState.IsKeyDown(Keys.OemOpenBrackets) && PastKey.IsKeyUp(Keys.OemOpenBrackets))
                    {
                        PlayerName = PlayerName + "Х";
                    }
                    if (keyboardState.IsKeyDown(Keys.OemPeriod) && PastKey.IsKeyUp(Keys.OemPeriod))
                    {
                        PlayerName = PlayerName + "Ю";
                    }
                    if (keyboardState.IsKeyDown(Keys.OemCloseBrackets) && PastKey.IsKeyUp(Keys.OemCloseBrackets))
                    {
                        PlayerName = PlayerName + "Ъ";
                    }
                    if (keyboardState.IsKeyDown(Keys.OemQuotes) && PastKey.IsKeyUp(Keys.OemQuotes))
                    {
                        PlayerName = PlayerName + "Э";
                    }
                    if (keyboardState.IsKeyDown(Keys.OemComma) && PastKey.IsKeyUp(Keys.OemComma))
                    {
                        PlayerName = PlayerName + "Б";
                    }
                }

                menu.PlayerName = PlayerName;
            }

            //Отображение игрового процесса, если переменная menuState == false
            if (gameProcess)
            {
                //Выход в меню из игрового процесса
                //Обработчик нажатия клавиши Escape
                if (keyboardState.IsKeyDown(Keys.Escape) && PastKey.IsKeyUp(Keys.Escape))
                {
                    buttonState = 0;
                    gameProcess = false;
                    menuState   = true;
                }

                //Получение времени для работа анимаций
                float Time = (float)gameTime.ElapsedGameTime.TotalSeconds;
                //Вызов функции, управляющей процессом игры
                ControlAnimation(Time);
                //Переменная, показывающая что игра не закончена (используется в меню)
                menu.IsGameOver = false;

                //Секундный таймер
                SecondsTimer += Time;
                //Если секундный таймер отсчитал одну секунду
                if (SecondsTimer >= 1)
                {
                    //Уменьшение времени инры на одну секунду
                    GameTimer--;
                    //Обнуление секундного таймера
                    SecondsTimer = 0;
                }
                //Если игровой таймер (отсчитавает оставшееся время игры) равен нулю
                if (GameTimer <= 0)
                {
                    gameProcess = false;

                    //Если счет больше или равен нужному, то победа
                    if (Score >= GameAim)
                    {
                        menu.GameResult = true;
                    }
                    //Иначе поражение
                    else
                    {
                        menu.GameResult = false;
                    }

                    if (menu.GameResult)
                    {
                        if (Level == 1)
                        {
                            Level = 2;
                        }
                        else if (Level == 2)
                        {
                            Level      = 1;
                            scoreState = true;
                        }
                    }
                    else
                    {
                        Level      = 1;
                        scoreState = true;
                    }

                    //Переменные, показывающие, что игра закончена
                    menu.IsGameOver = true;
                    menu.IsNewGame  = true;

                    menuState = true;

                    //Запись текущего счета игры в переменную класса Menu, показывающую этот счет в меню
                    menu.Score = Score;
                }
            }

            PastKey = keyboardState;

            base.Update(gameTime);
        }