コード例 #1
0
 public override void Update()
 {
     foreach (ConsoleKey key in keyObserver.GetCurrentKeys())
     {
         if (key == ConsoleKey.Escape)
         {
             Console.WriteLine("Bye :(");
             ParentScene.Terminate();
         }
     }
 }
コード例 #2
0
ファイル: Indicator.cs プロジェクト: Vascord/LP2_2project
        /// <summary>
        /// Public override method which is launched at each frame.
        /// </summary>
        public override void Update()
        {
            // Gets the position in Y of the indicator
            y = position.Pos.Y;

            /* Sees what key is pressed and depending of the keys pressed
             * the indicator can go up and down or initiate another scene*/
            foreach (ConsoleKey key in keyObserver.GetCurrentKeys())
            {
                if (key == ConsoleKey.UpArrow && option != 0)
                {
                    y -= 2;
                    option--;
                }
                else if (key == ConsoleKey.DownArrow && option != 3)
                {
                    y += 2;
                    option++;
                }
                else if (key == ConsoleKey.Enter)
                {
                    if (option == 0)
                    {
                        ParentScene.Terminate();
                        Level1 level1 = new Level1();
                        level1.Run();
                    }

                    if (option == 1)
                    {
                        ParentScene.Terminate();
                        Level2 level2 = new Level2();
                        level2.Run();
                    }
                    else if (option == 2)
                    {
                        ParentScene.Terminate();
                        Help helpMenu = new Help();
                        helpMenu.Run();
                    }
                    else
                    {
                        ParentScene.Terminate();
                    }
                }
            }

            // The position of the gameobject actualizes with the new values
            position.Pos = new Vector3(x, y, position.Pos.Z);
        }
コード例 #3
0
 /// <summary>
 /// Public override method which is launched at each frame.
 /// </summary>
 public override void Update()
 {
     /* Sees what key is pressed and depending of the keys pressed
      * the indicator initiate the menu scene */
     foreach (ConsoleKey key in keyObserver.GetCurrentKeys())
     {
         if (key == ConsoleKey.Enter)
         {
             ParentScene.Terminate();
             Menu menu = new Menu();
             menu.Run();
         }
     }
 }
コード例 #4
0
ファイル: Player.cs プロジェクト: fakenmc/CoreGameEngine
        // Update player in the current frame
        public override void Update()
        {
            // Get player position
            float x = position.Pos.X;
            float y = position.Pos.Y;

            // Check what keys were pressed and update position accordingly
            foreach (ConsoleKey key in keyObserver.GetCurrentKeys())
            {
                switch (key)
                {
                case ConsoleKey.UpArrow:
                    y -= 1;
                    break;

                case ConsoleKey.DownArrow:
                    y += 1;
                    break;

                case ConsoleKey.RightArrow:
                    x += 1;
                    break;

                case ConsoleKey.LeftArrow:
                    x -= 1;
                    break;
                }
            }

            // Make sure player doesn't get outside of game area
            x = Math.Clamp(x, 0, ParentScene.xdim - 3);
            y = Math.Clamp(y, 0, ParentScene.ydim - 3);

            // Update player position
            position.Pos = new Vector3(x, y, position.Pos.Z);
        }
コード例 #5
0
        /// <summary>
        /// Override of Update method to check input every frame and alter
        /// player's position.
        /// </summary>
        public override void Update()
        {
            // Get player position
            float x = _transform.Pos.X;
            float y = _transform.Pos.Y;

            // Check if player hasn't collided
            if (!_collider.Colliding)
            {
                _prevPos = new Vector2(x, y);

                // Check what keys were pressed and update position accordingly
                foreach (ConsoleKey key in _keyObserver.GetCurrentKeys())
                {
                    switch (key)
                    {
                    // Player goes up
                    case ConsoleKey.W:
                        y -= 1;
                        break;

                    // Player goes down
                    case ConsoleKey.S:
                        y += 1;
                        break;

                    // Player goes right
                    case ConsoleKey.D:
                        x += 1;
                        break;

                    // Player goes left
                    case ConsoleKey.A:
                        x -= 1;
                        break;

                    // Show player's stats and equipment
                    case ConsoleKey.C:
                        _rndr.CharInformationScreen(_player);
                        break;

                    // Use player attack method
                    case ConsoleKey.Spacebar:
                        _player.Attack();
                        break;

                    // Open a door
                    case ConsoleKey.E:
                        _player.OpenDoor(out x, (int)x, out y, (int)y);
                        break;
                    }
                }
            }

            // Make sure player doesn't get outside of dungeon area
            x = Math.Clamp(x, 1, ParentScene.xdim - 3);
            y = Math.Clamp(y, 1, ParentScene.ydim - 3);

            // Show essential information
            _rndr.EssencialInfo(_player);

            // Update player position
            _transform.Pos = new Vector3(x, y, _transform.Pos.Z);

            if (_collider.Colliding)
            {
                _collider.ColPos    = new Vector2(_prevPos.X, _prevPos.Y);
                _transform.Pos      = new Vector3(_prevPos, _transform.Pos.Z);
                _collider.Colliding = false;
            }
        }
コード例 #6
0
ファイル: Player.cs プロジェクト: Vascord/LP2_2project
        /// <summary>
        /// Public override method which is launched at each frame.
        /// </summary>
        public override void Update()
        {
            bool ground;

            x = position.Pos.X;
            y = position.Pos.Y;
            bool colide = false;

            // Sets Gameover to true when the player reaches the end of the
            // level.
            if (ParentScene.xdim - 9 == position.Pos.X && !Gameover)
            {
                Gameover = true;
            }

            if (Gameover)
            {
                // Sets the correct keys to observe
                ParentGameObject.GetComponent <KeyObserver>().keysToObserve =
                    new ConsoleKey[] { ConsoleKey.Enter, ConsoleKey.Escape };
                ParentScene.inputHandler.quitKeys = new ConsoleKey[] {
                    ConsoleKey.Enter,
                    ConsoleKey.Escape,
                };
                ParentScene.inputHandler.RegisterObserver(
                    ParentGameObject
                    .GetComponent <KeyObserver>()
                    .keysToObserve, ParentGameObject
                    .GetComponent <KeyObserver>());

                // Runs if player falls of the map.
                if (ParentScene.ydim - 4 == position.Pos.Y)
                {
                    // Outputs the dead text
                    dead.GetComponent <RenderableStringComponent>()
                    .SwitchString(() => "Press Enter to restart");

                    // Waits for player input to go to the next level or
                    // back to the main menu.
                    foreach (ConsoleKey key in keyObserver.GetCurrentKeys())
                    {
                        if (key == ConsoleKey.Enter)
                        {
                            if (level == 1)
                            {
                                ParentScene.Terminate();
                                Level1 level1 = new Level1();
                                level1.Run();
                                break;
                            }
                            else
                            {
                                ParentScene.Terminate();
                                Level2 level2 = new Level2();
                                level2.Run();
                                break;
                            }
                        }

                        if (key == ConsoleKey.Escape)
                        {
                            ParentScene.Terminate();
                            Menu menu = new Menu();
                            menu.Run();
                            break;
                        }
                    }
                }

                // Runs if player reaches the end of the level.
                else if (ParentScene.xdim - 9 == position.Pos.X)
                {
                    // Outputs the ending level text
                    dead.GetComponent <RenderableStringComponent>()
                    .SwitchString(() =>
                                  $"Press Enter to go to the next level, your score is : {actualScore.Scoring}");

                    // Waits for player input to go to the next level or back
                    // to the main menu.
                    foreach (ConsoleKey key in keyObserver.GetCurrentKeys())
                    {
                        if (key == ConsoleKey.Enter)
                        {
                            if (level == 1)
                            {
                                ParentScene.Terminate();
                                Level2 level2 = new Level2();
                                level2.Run();
                                break;
                            }
                            else
                            {
                                ParentScene.Terminate();
                                Menu menu = new Menu();
                                menu.Run();
                                break;
                            }
                        }

                        if (key == ConsoleKey.Escape)
                        {
                            ParentScene.Terminate();
                            Menu menu = new Menu();
                            menu.Run();
                            break;
                        }
                    }
                }
            }
            else
            {
                // Checks if the player is on the ground
                ground = CheckGround();

                // If he is not jumping and not in the ground, the player
                // will then starts to fall
                if (!inAir && !ground)
                {
                    while (!ground)
                    {
                        Falling();

                        // Removes the keyObserver from the player.
                        ParentScene.inputHandler
                        .RemoveObserver(ParentGameObject
                                        .GetComponent <KeyObserver>());

                        doesNotHaveKeyObserver = true;
                        ground = true;
                    }
                }

                // If he is in the ground, then he can walk and jump as normal
                else if (!inAir)
                {
                    if (doesNotHaveKeyObserver)
                    {
                        // Adds the keyObserver to the player.
                        ParentScene.inputHandler
                        .AddObserver(ParentGameObject
                                     .GetComponent <KeyObserver>());
                        doesNotHaveKeyObserver = false;
                    }

                    // Controls the movement of the player.
                    foreach (ConsoleKey key in keyObserver.GetCurrentKeys())
                    {
                        switch (key)
                        {
                        case ConsoleKey.RightArrow:
                            lastkey = ConsoleKey.RightArrow;
                            foreach (Vector2 v in occupied)
                            {
                                if (position.Pos.X + 7 == v.X &&
                                    position.Pos.Y == v.Y)
                                {
                                    colide = true;
                                }
                            }

                            if (!colide)
                            {
                                x++;
                            }

                            // Map limits.
                            x            = Math.Clamp(x, 0, ParentScene.xdim - 9);
                            y            = Math.Clamp(y, 0, ParentScene.ydim - 3);
                            position.Pos = new Vector3(
                                x,
                                y,
                                position.Pos.Z);
                            TurnSprite(true);
                            break;

                        case ConsoleKey.UpArrow:
                            lastkey      = ConsoleKey.UpArrow;
                            position.Pos = new Vector3(
                                x,
                                y,
                                position.Pos.Z);
                            break;

                        case ConsoleKey.LeftArrow:
                            lastkey = ConsoleKey.LeftArrow;
                            foreach (Vector2 v in occupied)
                            {
                                if (position.Pos.X - 1 == v.X &&
                                    position.Pos.Y == v.Y)
                                {
                                    colide = true;
                                }
                            }

                            if (!colide)
                            {
                                x--;
                            }

                            // Map limits.
                            x            = Math.Clamp(x, 0, ParentScene.xdim - 9);
                            y            = Math.Clamp(y, 0, ParentScene.ydim - 3);
                            position.Pos = new Vector3(
                                x,
                                y,
                                position.Pos.Z);
                            TurnSprite(false);
                            break;

                        case ConsoleKey.Spacebar:
                            inAir        = true;
                            position.Pos = new Vector3(
                                x,
                                y,
                                position.Pos.Z);
                            break;

                        case ConsoleKey.Escape:
                            ParentScene.Terminate();
                            Menu menu = new Menu();
                            menu.Run();
                            break;
                        }
                    }

                    // Map limits.
                    x = Math.Clamp(x, 0, ParentScene.xdim - 9);
                    y = Math.Clamp(y, 0, ParentScene.ydim - 3);
                }

                // Player Jump.
                else if (inAir)
                {
                    actualScore.Scoring -= 5;
                    ParentScene.inputHandler.RemoveObserver(
                        ParentGameObject.GetComponent <KeyObserver>());
                    if (jumpFrames <= 2)
                    {
                        y -= 2;
                        if (lastkey == ConsoleKey.RightArrow)
                        {
                            x += 3;
                        }
                        else if (lastkey == ConsoleKey.LeftArrow)
                        {
                            x -= 3;
                        }
                        jumpFrames++;
                    }
                    else if (jumpFrames == 3)
                    {
                        y -= 2;
                        if (lastkey == ConsoleKey.RightArrow)
                        {
                            x += 3;
                        }
                        else if (lastkey == ConsoleKey.LeftArrow)
                        {
                            x -= 3;
                        }
                        jumpFrames = 0;
                        inAir      = false;
                    }

                    // Map limits.
                    x            = Math.Clamp(x, 0, ParentScene.xdim - 9);
                    y            = Math.Clamp(y, 0, ParentScene.ydim - 3);
                    position.Pos = new Vector3(x, y, position.Pos.Z);
                    Thread.Sleep(80);
                }

                if (coins != null)
                {
                    coinScore = CheckCoin();
                }
                if (coinScore)
                {
                    actualScore.Scoring += 1000;
                    coinScore            = false;
                }
            }
        }