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; }
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); }