有没有办法缩短我的代码

本文关键字:我的 代码 有没有 | 更新日期: 2023-09-27 18:03:51

new c#。我正在通过一款掌机应用制作一款基于文本的冒险游戏。我制作了一个地图命令,当你输入"map"时,它会显示一张地图,上面的X表示你的当前位置。Int变量xCoordinate和yCoordinate用于表示角色在地图上的位置,当你输入"向北"或"向南"等时,它们会改变1。地图是13x10,所以你的角色有130个可能的位置。我写了130个不同的if语句,效果都很好。我的问题是是否有更有效/更简单的方法来做这件事。下面是我的代码:

    public static void Map()
    {
        Console.ForegroundColor = ConsoleColor.Cyan;
        Console.WriteLine("'n" + xCoordinate + ", " + yCoordinate);
        Console.WriteLine("'nTowns are represented by a '"T'". Current location is shown as an '"X'".'n");
        Console.ForegroundColor = ConsoleColor.DarkGray;
        if ((xCoordinate == -7) && (yCoordinate == -4))
        {
            Console.Write("[ ][ ][ ][ ][ ][ ][ ][T][ ][ ][ ][ ][ ] 5'n");
            Console.Write("[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ] 4'n");
            Console.Write("[ ][ ][ ][ ][T][ ][ ][ ][ ][T][ ][ ][ ] 3'n");
            Console.Write("[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ] 2'n");
            Console.Write("[ ][ ][T][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ] 1'n");
            Console.Write("[T][ ][ ][ ][ ][ ][ ][T][ ][ ][ ][T][ ] 0'n");
            Console.Write("[ ][ ][ ][ ][T][ ][ ][ ][ ][ ][ ][ ][ ]-1'n");
            Console.Write("[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]-2'n");
            Console.Write("[ ][ ][T][ ][ ][ ][T][ ][ ][ ][T][ ][ ]-3'n");
            Console.Write("[X][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]-4'n");
            Console.Write("-7 -6 -5 -4 -3 -2 -1  0  1  2  3  4  5'n'n");
        }
        Console.ForegroundColor = ConsoleColor.White;
  }

同样,我在130个不同的if语句中输入了130次映射,每次X都在其他地方。我本以为会有更好的办法,但是我不知道。

有没有办法缩短我的代码

你应该阅读和学习像for这样的循环。

for(var xCoordinate  = -10; xCoordinate  <=10; xCoordinate ++)
{
   for(var yCoordinate = 5; yCoordinate >= 5; yCoordinate --)
   {
      if (xCoordinate  == ... && yCoordinate == ..)
      { 
         Console.Write("[X]");
      }
      else
      { 
         Console.Write("[ ]");
      }
    }
    Console.WriteLine();
}
    public static void Map()
    {
        Console.ForegroundColor = ConsoleColor.Cyan;
        Console.WriteLine("'n" + xCoordinate + ", " + yCoordinate);
        Console.WriteLine("'nTowns are represented by a '"T'". Current location is shown as an '"X'".'n");
        Console.ForegroundColor = ConsoleColor.DarkGray;
        for (int y = 5; y >= -4; y--)
        {
            for (int x = -7; x <= 5; x++)
            {
                Console.Write(yCoordinate == y && xCoordinate == x ? "[X]" : "[ ]");
            }
            Console.WriteLine(" {0}", y);
        }
        Console.Write("-7 -6 -5 -4 -3 -2 -1  0  1  2  3  4  5'n'n");
        Console.ForegroundColor = ConsoleColor.White;
    }