Использование таймера для перемещения моих змей, но не хочу менять интервал - PullRequest
0 голосов
/ 03 апреля 2020

Form1

        public Form1()
        {
            InitializeComponent();
            new GameSetting();
            new GameSetting2();
            GameTimer.Interval = 60;
            GameTimer.Tick += UpdateScreen;
            GameTimer.Start();
            startGame();
        }

       private void UpdateScreen(object sender, EventArgs e)
        {
            if (GameSetting.Gameover == true || GameSetting2.Gameover2 == true)
            {
                if (KeyInput.KeyInputs(Keys.Enter))
                {
                    startGame();
                }
            }
            else
            {
                if (KeyInput.KeyInputs(Keys.Right) && GameSetting.Movment != SnakeMovment.Left)
                {
                    GameSetting.Movment = SnakeMovment.Right;
                }

                else if (KeyInput.KeyInputs(Keys.Left) && GameSetting.Movment != SnakeMovment.Right)
                {
                    GameSetting.Movment = SnakeMovment.Left;
                }

                else if (KeyInput.KeyInputs(Keys.Up) && GameSetting.Movment != SnakeMovment.Down)
                {
                    GameSetting.Movment = SnakeMovment.Up;
                }

                else if (KeyInput.KeyInputs(Keys.Down) && GameSetting.Movment != SnakeMovment.Up)
                {
                    GameSetting.Movment = SnakeMovment.Down;
                }

                PlayerMovment();
            }

     private void PlayerMovment()
    {
        for (int i = SnakeBoddy.Count - 1; i >= 0; i--)
        {
            if (i == 0)
            {
                switch (GameSetting.Movment)
                {
                    case SnakeMovment.Right:
                        SnakeBoddy[i].X++;
                        break;

                    case SnakeMovment.Left:
                        SnakeBoddy[i].X--;
                        break;

                    case SnakeMovment.Up:
                        SnakeBoddy[i].Y--;
                        break;

                    case SnakeMovment.Down:
                        SnakeBoddy[i].Y++;
                        break;
                }

GameSetting

class GameSetting
    {
        public static int Width { get; set; }
        public static int Height { get; set; }
        public static int SnakeSpeed { get; set; }
        public static int GameScore { get; set; }
        public static int GamePoint { get; set; }
        public static bool Gameover { get; set; }
        public static SnakeMovment Movment { get; set; }

        public GameSetting()
        {
            Height = 16;
            Width = 16;
            Gameover = false;
            SnakeSpeed = 60;
            Movment = SnakeMovment.Down;
            GamePoint = 1;
            GameScore = 0;
        }

    }

Как бы я сделал так, чтобы скорость змеи была = to SnakeSpeed. Я могу сделать что-то вроде GameTimer.Interval = 360/GameSetting.SnakeSpeed;, но это не сработало бы, если у меня больше 1 змеи + Мне кажется, что изменение интервала не является правильным способом, и вместо того, чтобы устанавливать скорость змеи на интервал, как бы я ее установил змею индивидуально?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...