嘿那里,我正在用太空船写一个代码,但我不能向左或向右移动它,我想问是否有人可以帮助我,因为我不理解它。我尝试了一些类似的东西,比如以其他方式编写它,但它不起作用,我对编程很新,可能你可以通过我编写代码的方式看到它。
string player = @"
^
o
| o |
/\\\o///\
</o\>";
char laser = '|';
int moves = 0;
int xlaser = rnd.Next(width), ylaser = rnd.Next(hight);
WriteHere(xlaser, ylaser, laser);
WriteHere(x, y, player);
// game loop
do
{
Console.SetCursorPosition(0, 0);
if (Console.KeyAvailable)
{
switch (Console.ReadKey(true).Key)
{
case ConsoleKey.UpArrow:
{
if (y > 0)
{
//y -= 1;
y--; // ist //y = y - 1;
}
moves++;
}
break;
case ConsoleKey.DownArrow:
{
if (y < hight - 1)
{
y++; // ist y = y + 1;
}
moves++;
}
break;
case ConsoleKey.LeftArrow:
{
if (x > 0)
{
x--;
}
moves++;
}
break;
case ConsoleKey.RightArrow:
{
if (x < width - 1)
{
x++;
}
moves++;
}
break;
}
Console.Clear();
Writehere(x, y, player);
答案 0 :(得分:0)
如果您定义没有空格的播放器字符串并逐行将其写入控制台,则可以正常工作。我确信有更好的解决方案,但作为快速解决方案,这可能没问题。
用此代码替换WriteHere
static void WriteHere(int x, int y, string s)
{
foreach (var line in s.Split('\n'))
{
Console.SetCursorPosition(x, y);
Console.Write(line);
y++;
}
}
对于玩家而言,而不是
string player = @"
^
o
| o |
/\\\o///\
</o\>";
这样做(注意左边的空白区别)。
string player = @"
^
o
| o |
/\\\o///\
</o\>";