@ikikaidesu

С# движение двух игроков одновременно?

Пишу игру пинг-понг на c# в консоли, дошел до движения игроков(ракеток) и столкнулся с тем, что не могу сделать так чтобы два игрока могли двигаться одновременно, только один мог. Вот код где вызывается движение. Подозреваю в своей проблеме ReadKey, но даже так не знаю что делать, надеюсь на любую помощь!

while (true)
            {
                Task player1Task = Task.Run(() => player1.Move());
                Task player2Task = Task.Run(() => player2.Move());
                // запускаем таймер
                
                watcher.Restart();
                while (watcher.ElapsedMilliseconds < FrameMS)
                {
            
                }
            }

а вот код движения игрока(ракетки)

public void Move()
    {
        if (playernumber == 1)
        {
            ConsoleKey key = Console.ReadKey(true).Key;
            if (key == ConsoleKey.W)
            {
                Clear();
                for (int i = 0; i < racket.Length; i++)
                {
                    racket[i].y -= 1;
                    racket[i].Draw();
                }
            }
            else if (key == ConsoleKey.S)
            {
                Clear();
                for (int i = 0; i < racket.Length; i++)
                {
                    racket[i].y += 1;
                    racket[i].Draw();
                }
            }
        }
        else
        {
            ConsoleKey key = Console.ReadKey(true).Key;
            if (key == ConsoleKey.UpArrow)
            {
                Clear();
                for (int i = 0; i < racket.Length; i++)
                {
                    racket[i].y -= 1;
                    racket[i].Draw();
                }
            }
            else if (key == ConsoleKey.DownArrow)
            {
                Clear();
                for (int i = 0; i < racket.Length; i++)
                {
                    racket[i].y += 1;
                    racket[i].Draw();
                }
            }
        }
    }

а вот код создания игрока(ракетки)

public int playernumber;
    public Pixel[] racket = new Pixel[8];
    public Player(int X, int Y, char Pixel, ConsoleColor Color)
    {
        if (Color == tennis.Program.playeronecolor)
        {
            playernumber = 1;
        }
        else
        {
            playernumber = 2;
        }
        for (int i = 0; i < racket.Length; i++)
        {
            // заполняем массив из частей нашей ракетки
            racket[i] = new Pixel(X, Y + i, Pixel, Color);
            // отрисовываем ее
            racket[i].Draw();
        }
    }
  • Вопрос задан
  • 75 просмотров
Пригласить эксперта
Ответы на вопрос 1
ZhenyaMak
@ZhenyaMak
Писать качественный софт? Пфф, это не для меня.
Многопоточность??
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы