一开始我会说我是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");
}
答案 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()时都会创建一个新字符串。