Пишу игру пинг-понг на 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();
}
}