【问题标题】:Outputting 2-dimensional arrays to the Console将二维数组输出到控制台
【发布时间】:2015-11-10 11:46:47
【问题描述】:

首先,我想使用控制台在 c# 中创建一个“oldschool”棋盘游戏。

我已经制作了一个二维数组,其中包含我希望控制台显示为板的字段,您可以在其中移动“英雄”。

Feld[,] result = new Feld[,] {
    {null,null,null,null,null,null,null,null,new Feld(Richtungen.UNTEN),null,null,null,null,null,null,null,null },
    {new Feld(Richtungen.UNTEN|Richtungen.RECHTS),new Feld(Richtungen.RECHTS|Richtungen.LINKS),new Feld(Richtungen.RECHTS|Richtungen.LINKS),new Feld(Richtungen.RECHTS|Richtungen.LINKS),new Feld(Richtungen.RECHTS|Richtungen.LINKS),new Feld(Richtungen.RECHTS|Richtungen.LINKS),new Feld(Richtungen.RECHTS|Richtungen.LINKS),new Feld(Richtungen.RECHTS|Richtungen.LINKS),new Feld(Richtungen.OBEN|Richtungen.LINKS|Richtungen.RECHTS),new Feld(Richtungen.RECHTS|Richtungen.LINKS),new Feld(Richtungen.RECHTS|Richtungen.LINKS),new Feld(Richtungen.RECHTS|Richtungen.LINKS),new Feld(Richtungen.RECHTS|Richtungen.LINKS),new Feld(Richtungen.RECHTS|Richtungen.LINKS),new Feld(Richtungen.RECHTS|Richtungen.LINKS),new Feld(Richtungen.RECHTS|Richtungen.LINKS),new Feld(Richtungen.UNTEN|Richtungen.LINKS) },
    {new Feld(Richtungen.OBEN|Richtungen.UNTEN),null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,new Feld(Richtungen.OBEN|Richtungen.UNTEN) },
    {new Feld(Richtungen.OBEN|Richtungen.RECHTS),new Feld(Richtungen.RECHTS|Richtungen.LINKS),new Feld(Richtungen.RECHTS|Richtungen.LINKS),new Feld(Richtungen.RECHTS|Richtungen.LINKS),new Feld(Richtungen.RECHTS|Richtungen.LINKS),new Feld(Richtungen.RECHTS|Richtungen.LINKS),new Feld(Richtungen.RECHTS|Richtungen.LINKS),new Feld(Richtungen.RECHTS|Richtungen.LINKS),new Feld(Richtungen.UNTEN|Richtungen.LINKS|Richtungen.RECHTS),new Feld(Richtungen.RECHTS|Richtungen.LINKS),new Feld(Richtungen.RECHTS|Richtungen.LINKS),new Feld(Richtungen.RECHTS|Richtungen.LINKS),new Feld(Richtungen.RECHTS|Richtungen.LINKS),new Feld(Richtungen.RECHTS|Richtungen.LINKS),new Feld(Richtungen.RECHTS|Richtungen.LINKS),new Feld(Richtungen.RECHTS|Richtungen.LINKS),new Feld(Richtungen.OBEN|Richtungen.LINKS)  },
    {null,null,null,null,null,null,null,null,new Feld(Richtungen.UNTEN|Richtungen.OBEN),null,null,null,null,null,null,null,null  },
    {null,null,null,null,null,null,new Feld(Richtungen.RECHTS|Richtungen.UNTEN),new Feld(Richtungen.RECHTS|Richtungen.LINKS),new Feld(Richtungen.LINKS|Richtungen.OBEN|Richtungen.RECHTS),new Feld(Richtungen.RECHTS|Richtungen.LINKS),new Feld(Richtungen.LINKS|Richtungen.UNTEN),null,null,null,null,null,null   },
    {null,null,null,null,null,null,new Feld(Richtungen.OBEN|Richtungen.UNTEN),null,null,null,new Feld(Richtungen.OBEN|Richtungen.UNTEN),null,null,null,null,null,null   },
    {null,null,null,null,new Feld(Richtungen.UNTEN|Richtungen.RECHTS),new Feld(Richtungen.LINKS|Richtungen.RECHTS),new Feld(Richtungen.LINKS|Richtungen.RECHTS),new Feld(Richtungen.LINKS|Richtungen.RECHTS),new Feld(Richtungen.LINKS|Richtungen.RECHTS),new Feld(Richtungen.LINKS|Richtungen.RECHTS),new Feld(Richtungen.LINKS|Richtungen.RECHTS),new Feld(Richtungen.LINKS|Richtungen.RECHTS),new Feld(Richtungen.LINKS|Richtungen.UNTEN),null,null,null,null   },
    {null,null,null,null,new Feld(Richtungen.OBEN|Richtungen.UNTEN),null,null,null,null,null,null,null,new Feld(Richtungen.OBEN|Richtungen.UNTEN),null,null,null,null   },
    {null,null,new Feld(Richtungen.UNTEN|Richtungen.RECHTS),new Feld(Richtungen.RECHTS|Richtungen.LINKS),new Feld(Richtungen.LINKS|Richtungen.OBEN|Richtungen.RECHTS),new Feld(Richtungen.RECHTS|Richtungen.LINKS),new Feld(Richtungen.RECHTS|Richtungen.LINKS|Richtungen.UNTEN),new Feld(Richtungen.RECHTS|Richtungen.LINKS),new Feld(Richtungen.LINKS|Richtungen.RECHTS),new Feld(Richtungen.RECHTS|Richtungen.LINKS),new Feld(Richtungen.RECHTS|Richtungen.LINKS|Richtungen.UNTEN),new Feld(Richtungen.RECHTS|Richtungen.LINKS),new Feld(Richtungen.RECHTS|Richtungen.LINKS|Richtungen.OBEN),new Feld(Richtungen.RECHTS|Richtungen.LINKS),new Feld(Richtungen.LINKS|Richtungen.UNTEN),null,null   },
    {null,null,new Feld(Richtungen.OBEN|Richtungen.UNTEN),null,null,null,new Feld(Richtungen.OBEN|Richtungen.UNTEN),null,null,null,new Feld(Richtungen.OBEN|Richtungen.UNTEN),null,null,null,new Feld(Richtungen.OBEN|Richtungen.UNTEN),null,null   },
    {new Feld(Richtungen.UNTEN|Richtungen.RECHTS),new Feld(Richtungen.LINKS|Richtungen.RECHTS),new Feld(Richtungen.LINKS|Richtungen.RECHTS|Richtungen.OBEN),new Feld(Richtungen.LINKS|Richtungen.RECHTS),new Feld(Richtungen.LINKS|Richtungen.RECHTS|Richtungen.UNTEN),new Feld(Richtungen.LINKS|Richtungen.RECHTS),new Feld(Richtungen.LINKS|Richtungen.RECHTS|Richtungen.OBEN),new Feld(Richtungen.LINKS|Richtungen.RECHTS),new Feld(Richtungen.UNTEN|Richtungen.LINKS|Richtungen.RECHTS),new Feld(Richtungen.LINKS|Richtungen.RECHTS),new Feld(Richtungen.LINKS|Richtungen.RECHTS|Richtungen.OBEN),new Feld(Richtungen.LINKS|Richtungen.RECHTS),new Feld(Richtungen.LINKS|Richtungen.RECHTS|Richtungen.UNTEN),new Feld(Richtungen.LINKS|Richtungen.RECHTS),new Feld(Richtungen.LINKS|Richtungen.RECHTS|Richtungen.OBEN),new Feld(Richtungen.LINKS|Richtungen.RECHTS),new Feld(Richtungen.LINKS|Richtungen.UNTEN)   },
    {new Feld(Richtungen.UNTEN|Richtungen.OBEN),null,null,null,new Feld(Richtungen.UNTEN|Richtungen.OBEN),null,null,null,new Feld(Richtungen.UNTEN|Richtungen.OBEN),null,null,null,new Feld(Richtungen.UNTEN|Richtungen.OBEN),null,null,null,new Feld(Richtungen.UNTEN|Richtungen.OBEN)   },
    {new Feld(Richtungen.OBEN|Richtungen.RECHTS,false),new Feld(Richtungen.LINKS|Richtungen.RECHTS,false),new Feld(Richtungen.LINKS|Richtungen.RECHTS|Richtungen.UNTEN,false),new Feld(Richtungen.LINKS|Richtungen.RECHTS,false),new Feld(Richtungen.LINKS|Richtungen.RECHTS|Richtungen.OBEN,false),new Feld(Richtungen.LINKS|Richtungen.RECHTS,false),new Feld(Richtungen.LINKS|Richtungen.RECHTS|Richtungen.UNTEN,false),new Feld(Richtungen.LINKS|Richtungen.RECHTS,false),new Feld(Richtungen.OBEN|Richtungen.LINKS|Richtungen.RECHTS,false),new Feld(Richtungen.LINKS|Richtungen.RECHTS,false),new Feld(Richtungen.LINKS|Richtungen.RECHTS|Richtungen.UNTEN,false),new Feld(Richtungen.LINKS|Richtungen.RECHTS,false),new Feld(Richtungen.LINKS|Richtungen.RECHTS|Richtungen.OBEN,false),new Feld(Richtungen.LINKS|Richtungen.RECHTS,false),new Feld(Richtungen.LINKS|Richtungen.RECHTS|Richtungen.UNTEN,false),new Feld(Richtungen.LINKS|Richtungen.RECHTS,false),new Feld(Richtungen.LINKS|Richtungen.OBEN,false) }
  };

Null 是空格,Feld (Richtungen.XYZ) 表示在方向上具有连接的字段。 (Richtungen.Oben = Direction.Up 中的连接)。

现在我遇到了一个问题 - 我不知道如何将我的 Array 放入控制台。

【问题讨论】:

标签: c# arrays


【解决方案1】:

您将需要使用两个For 循环来遍历数组并使用Console.Write() 来绘制板。

class Program
{
    static void Main(string[] args)
    {
        Feld[,] result = new Feld[,] { } ;

        for (int x = 0; x < 100; x++)
        {
            for (int y = 0; y < 100; y++)
            {
                if (result[x, y].IsFilled)
                {
                    Console.Write("x");
                }
                else
                {
                    Console.Write("O");
                }
            }
            Console.Write(Environment.NewLine);
        }
        Console.Read();
    }
}

public class Feld
{
    public bool IsFilled { get; set; }
    public Feld(bool isFill)
    {
        IsFilled = isFill;
    }
}

使用Propertiesif 语句来决定需要打印的内容。将 100 值更改为数组的 X 和 Y 长度。

【讨论】:

  • 感谢您的回答。我会尝试一下并尝试为空值编写一个异常。如果我正确阅读了您的代码,那些不包括在内并且会引发错误或者我错过了什么?
  • 是的,我没有完全遵守您的代码。如果您不想更改程序绘制的内容,您可以检查空值,这只是如何绘制数组的一般概念。 - 希望这会有所帮助
【解决方案2】:

试试这样的:

for (int y = 0 y < result.GetLength(1); y++)
{  
  for (int x = 0 x < result.GetLength(0); x++)
  {
    Console.Write(result[x,y]?.ToString())
  }
  Console.WriteLine();
}

【讨论】:

  • result[x,y].ToString() 将在result[x,y] 返回null时抛出异常
  • 请添加评论、注释等说明您使用过 C# 6.0 语法(C# 6.0 还没有那么流行)
  • 您不需要ToString 电话。只需将其删除。 Write(object) 重载将被调用,它会在内部检查 null,然后调用 ToString。
猜你喜欢
  • 1970-01-01
  • 2014-07-28
  • 1970-01-01
  • 2018-06-10
  • 2015-02-17
  • 2021-12-31
  • 2021-10-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多