使用ReadKey()

时间:2015-11-06 01:10:00

标签: c#

一开始我会说我是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");
}

1 个答案:

答案 0 :(得分:-1)

你可以使用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;
    }
}

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