转换列表<list <parts>&gt;网格到字符C#

时间:2016-11-09 08:06:31

标签: c#

我正在C#中创建一个推箱子游戏(谷歌,如果需要),我正试图让我的IsFinishedLevel功能正常工作。

这些是我背后的想法

背景是:Parts.Goal和PlayerOnGoal是游戏的一部分

此游戏的等级存储在此

public List<List<Parts>> Grid { get { return grid; } }

这是我尝试创建isFinished方法

public bool IsFinished()
    {
        bool Result = true;
         for (int i = 0; i < Grid.ToString().Length; i++)
         {
             if (charLevel == (char)Parts.Goal || charLevel == (char)Parts.PlayerOnGoal)
             {
                 Result = false;
             }
         }           
        return Result;
    }

这就是我试图将其转换为char

    public string stringLevel;
    public char charLevel;

    public void StringGrid()
    {
        stringLevel = String.Concat(string.Empty, Grid.ToArray());
    }      
    public void CharLevel()
    {
        charLevel = Convert.ToChar(stringLevel);
    }  

stringLevel将返回null。

HELP !!!!!

1 个答案:

答案 0 :(得分:1)

好吧,看来我真的想要我的水晶球以便逆向工程问题:你有

public List<List<Parts>> Grid { get { return grid; } }

其中Parts可以是Parts.GoalParts.PlayerOnGoal等,您想要实现方法

public bool IsFinished()

应该检测Parts.PlayerOnGoal中是否有任何Grid(即,如果玩家已达到他/她的目标,则无论何时达到目标)。如果这是您的实际问题,解决方案可能是这样的:

public bool IsFinished() {
  return Grid
    .SelectMany(list => list) // flatten the list
    .Any(parts => (char) parts == (char) Parts.PlayerOnGoal);
}

如果您想将整个Grid表示为string

// glue all the lines together
string grid = string.Concat(Grid  
  .SelectMany(list => list)
  .Select(parts => (char)parts));

或(将线与线分开)

string grid = string.Join(Environment.NewLine, Grid
  .Select(line => string.Concat(line
     .Select(parts => (char) parts)))); 

至于

public string stringLevel;

charLevel = Convert.ToChar(stringLevel);

我没有机会帮助你。什么是预期的结果?什么是stringLevel :我们可以拥有stringLevel == "level 12"stringLevel == "123"吗?那么charLevel应该是什么? (char) 12