C#控制台游戏空间入侵者

时间:2017-09-30 08:24:41

标签: c# console console-application

嘿那里,我正在用太空船写一个代码,但我不能向左或向右移动它,我想问是否有人可以帮助我,因为我不理解它。我尝试了一些类似的东西,比如以其他方式编写它,但它不起作用,我对编程很新,可能你可以通过我编写代码的方式看到它。

           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);

1 个答案:

答案 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\>";