我正在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 !!!!!
答案 0 :(得分:1)
好吧,看来我真的想要我的水晶球以便逆向工程问题:你有
public List<List<Parts>> Grid { get { return grid; } }
其中Parts
可以是Parts.Goal
,Parts.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
?