C# 使两个字符同时移动

C# 使两个字符同时移动,c#,console-application,C#,Console Application,我正在尝试在控制台应用程序中制作一个小游戏,我希望在移动玩家的同时,敌人能够以一定的速度移动。现在代码如下所示: public static int y = 5; public static string player = "O"; public static int enemyX = 10; static void Main(string[] args) { while (true) { Console.

我正在尝试在控制台应用程序中制作一个小游戏,我希望在移动玩家的同时,敌人能够以一定的速度移动。现在代码如下所示:

public static int y = 5;
    public static string player = "O";
    public static int enemyX = 10;
    static void Main(string[] args)
    {

        while (true)
        {
            Console.SetCursorPosition(enemyX, 10);
            Console.Write("X");
            enemyX = enemyX - 1;
            Console.CursorVisible = false;
            Console.SetCursorPosition(5, y);
            Console.Write(player);

            var move = Console.ReadKey(true);
            switch (move.Key)
            {
                case ConsoleKey.W:
                    y = y - 1;
                    break;
                case ConsoleKey.S:
                    y = y + 1;
                    break;
            }
            if (y <= 0)
            {
                y = 1;
            }

            if (y >= 25)
            {
                y = 24;
            }
            Console.Clear();
        }
    }
公共静态int y=5;
公共静态字符串播放器=“O”;
公共静态int enemyX=10;
静态void Main(字符串[]参数)
{
while(true)
{
控制台。设置光标位置(enemyX,10);
控制台。写入(“X”);
enemyX=enemyX-1;
Console.CursorVisible=false;
控制台。设置光标位置(5,y);
控制台。写入(播放器);
var move=Console.ReadKey(true);
开关(移动键)
{
案例ConsoleKey.W:
y=y-1;
打破
case ConsoleKey.S:
y=y+1;
打破
}
如果(y=25)
{
y=24;
}
Console.Clear();
}
}

据我所知,无论玩家是否移动,你都希望敌人移动,并且你可以使用 例如:

bool BreakThread = false; //you need this to break the thread loop 
Thread enemyThread = new Thread(()=>
{
  while(!BreakThread)
  {
  //do Enemy Actions
  }
});

enemyThread.Start();
//then execute your main game loop
但请记住,当您需要时,请将BreakThread值设置为true
正在关闭游戏。

控制台。设置光标位置(enemyX,y)?您需要准确描述问题是什么-您对代码的期望以及您得到了什么。抱歉,不清楚。我非常希望敌人向玩家移动,我不希望敌人自由移动。现在,当我按下W或S时,敌人和玩家同时移动。但我希望敌人自己移动。