コード例 #1
0
ファイル: Game1.cs プロジェクト: HyperViperBeam/SnakeGame
        /// <summary>
        /// Allows the game to run logic such as updating the world,
        /// checking for collisions, gathering input, and playing audio.
        /// </summary>
        /// <param name="gameTime">Provides a snapshot of timing values.</param>
        protected override void Update(GameTime gameTime)
        {
            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
            {
                this.Exit();
            }
            KeyboardState keyState = Keyboard.GetState();

            switch (gameState)
            {
            case GameStates.TitleScreen:
                titleScreenTimer +=
                    (float)gameTime.ElapsedGameTime.TotalSeconds;

                if (titleScreenTimer >= titleScreenDelayTime)
                {
                    if ((Keyboard.GetState().IsKeyDown(Keys.Space)) ||
                        (GamePad.GetState(PlayerIndex.One).Buttons.A ==
                         ButtonState.Pressed))
                    {
                        gameState = GameStates.Playing;
                    }
                }
                break;

            case GameStates.Playing:

                if (keyState.IsKeyDown(Keys.Down) && snake1.Facing != 2)
                {
                    snake1.Facing = 0;
                }
                else if (keyState.IsKeyDown(Keys.Right) && snake1.Facing != 3)
                {
                    snake1.Facing = 1;
                }
                else if (keyState.IsKeyDown(Keys.Up) && snake1.Facing != 0)
                {
                    snake1.Facing = 2;
                }
                else if (keyState.IsKeyDown(Keys.Left) && snake1.Facing != 1)
                {
                    snake1.Facing = 3;
                }


                if (snake1.CheckCollisions(this.Window) || snake1.isAlive == false)
                {
                    snake1.isAlive = false;
                    gameState      = GameStates.GameOver;
                }
                if (timeRemaining == 0.0f)
                {
                    snake1.Update();


                    if (snake1.DidEatPellet(Pellet))
                    {
                        NewPellet();
                        score++;
                    }
                    timeRemaining = timeTotal;
                }
                timeRemaining = MathHelper.Max(0, timeRemaining -
                                               (float)gameTime.ElapsedGameTime.TotalSeconds);
                break;

            case GameStates.GameOver:
                snake1 = new Snake(600, 200, 22, WhiteScheme.ToList());

                break;
            }
            base.Update(gameTime);
        }