好的我收到了无法访问的代码,并且并非所有代码路径都从此代码块返回值
private string MoveForward()
{
//if current direction is east, GetRoomEast
if (Player.CurrentDirection == "EAST")
{
return GetroomEast();
if (Player.NextMove != "")
{
Player.Y++;
}
else
{
Console.WriteLine("You Bumped into a Wall");
}
//if GetRoomEast is not "", then playercol = playercol+1;
//if current direction is west...
}
}
和我在顶部的初始化变量是
public struct DragonPlayer
{
public int X, Y;
public string CurrentDirection;
public string NextMove;
}
public class DragonGameboard
{
public string[,] GameboardArray;
public DragonPlayer Player;
private Random r;
public DragonGameboard()
{
GameboardArray = new string[4, 4];
Player.CurrentDirection = "EAST";
Player.NextMove = "";
r = new Random();
Player.X = r.Next(0, 4);
Player.Y = r.Next(0, 4);
GenerateRandomBoard();
}
}
为什么这样做?我确定它必须是非常愚蠢的东西,但我无法弄清楚它是什么?
答案 0 :(得分:1)
你在if语句之前从函数返回,它永远不会转到你的if语句。因此你的if语句变成无法访问的代码
return GetroomEast();
if (Player.NextMove != "")
您应该将此return语句放在if语句之后。
答案 1 :(得分:0)
代码的每个路径都必须返回string
类型的值。另外,您拥有永远无法执行的代码,即:
if (Player.NextMove != "")
{
Player.Y++;
}
else
{
Console.WriteLine("You Bumped into a Wall");
}
你已经返回了一个值,所以在此之后没有任何内容被执行。
此外,导致函数结束的每个路径都返回一个值。按逻辑方式查看代码并查找方案,您会发现很多。
也许我建议慢慢开始学习基础知识,因为这些错误对于任何编程语言都是非常基础的+你已经得到了这个消息,这很清楚。编程游戏对程序员来说并不是一个好的起点。
答案 2 :(得分:0)
您定义了MoveForward()
转发方法以返回字符串,但您没有返回一个字符串。将定义更改为:
private void MoveForward();
...或返回一个字符串。
答案 3 :(得分:0)
我在代码中添加了注释,以显示无法访问代码的原因以及为什么所有代码路径都不返回值。
private string MoveForward()
{
if (Player.CurrentDirection == "EAST")
{
return GetroomEast(); //Once you return the value here it ends the call.
if (Player.NextMove != "") //This line (or anything below it) will never run.
{
Player.Y++;
}
else
{
Console.WriteLine("You Bumped into a Wall");
}
//if GetRoomEast is not "", then playercol = playercol+1;
//if current direction is west...
}
//We reach here if Player.CurrentDirection does not equal "EAST"
//As there is no more code there is no returned value.
//You would need to do something like return NoValidMove()
}
答案 4 :(得分:0)
在这一行之后,return GetroomEast()
执行被保释出循环,因此,你得到无法访问的代码错误。在下一个if,else块中也没有返回任何内容。因为你的方法是字符串返回类型....它必须返回字符串..