使用ReadKey()移动数组

本文关键字:移动 数组 ReadKey 使用 | 更新日期: 2023-09-27 18:20:57

一开始,我会告诉大家我对C#和编程是新手。我一个人尽可能多地学习。我的第一个学习项目很简单。使用"W、S、A、D"移动槽阵列10x10。这是"游戏",让用户移动他的角色通过阵列。问题是,只要"我的角色"的位置超出范围,我就想让他移动。所以我想我正在尝试做内积循环,这是打印位置,让我们向前移动。如果我使用例如do{}while(true),则在按下一个键后,位置一直在变化。我正在寻找如何为这种"运动"构建循环的建议。我附上了我的代码,负责移动角色。

int axisx = 0;
int axisy = 0;
var movement = Console.ReadKey();
int[,] level = new int[10, 10];
if (movement.Key.ToString() == "W"){axisy = axisy+1;}
else if (movement.Key.ToString() == "S"){axisy = axisy-1;}
else if (movement.Key.ToString() == "D"){axisx = axisx+1;}
else if (movement.Key.ToString() == "A"){axisx = axisx-1;}
Console.WriteLine("{2} is on position:{0},{1}", axisx, axisy, Player1.getBuilderName());
if (movement.Key == ConsoleKey.Escape)
{
    Console.WriteLine("You pressed Escape, Goodbye");
}

使用ReadKey()移动数组

您可以使用while(true)循环:

int axisx=0;int axisy=0;

while (true)
{
    var movement = Console.ReadKey();
    if (movement.KeyChar == 'W' || movement.KeyChar == 'w')
    {
        axisy += 1;
    }
    else if (movement.KeyChar == 'S' || movement.KeyChar == 's')
    {
        axisy -= 1;
    }
    else if (movement.KeyChar == 'D' || movement.KeyChar == 'd')
    {
        axisx += 1;
    }
    else if (movement.KeyChar == 'A' || movement.KeyChar == 'a')
    {
        axisx -= 1;
    }
    Console.WriteLine("{2} is on position:{0},{1}", axisx, axisy, Player1.getBuilderName());
    if (movement.Key == ConsoleKey.Escape)
    {
        Console.WriteLine("You pressed Escape, Goodbye");
        break;
    }
}

休息;Escape块会让你退出循环。你也可以使用移动。KeyChar而不是移动。Key.ToString(),字符串在.NET中是不可变的,所以每次执行ToString()时都会创建一个新的字符串。