【发布时间】:2015-12-02 22:17:03
【问题描述】:
前提是根据角色选择的方向和掷骰子的值在网格周围移动角色。
函数CalculateMove 在PrepareMove 中被调用。在CalculateMove 中,变量finishX 或finishY 与diceValue 的值相加或相减。
CalculateMove 中与 finalX 或 finalY 相关的所有内容都将被忽略,即使在 if 语句之外写入 += 3 也是如此。 The screenshot of a little debug log shows that the variables finishX, finishY and foo are not being treated in the method.
static void PrepareMove(Position startPosition, Position finishPosition, Player playerGreen, Player playerYellow, Player playerBlue, Player playerRed, string playerMoveDirection, string currentPlayer, string winningPlayer, string[,] board, int diceValue, int startX, int startY, int finishX, int finishY, bool gameOver)
{
GetStartPosition(board, startPosition, currentPlayer, startX, startY);
CalculateMove(playerMoveDirection, board, diceValue, startX, startY, finishX, finishY);
Console.WriteLine("\nStart XY = " + startX + "-" + startY + "\nDice Value = " + diceValue + "\nMoveDir = " + playerMoveDirection + "\nFinish XY = " + finishX + " -- " + finishY + "\n");
CheckPieceCaptured(board, playerGreen, playerYellow, playerBlue, playerRed, currentPlayer, winningPlayer, finishX, finishY, gameOver);
MakeMove(board, startX, startY, finishX, finishY);
}
static void CalculateMove(string playerMoveDirection, string[,] board, int diceValue, int startX, int startY, int finishX, int finishY)
{
finishX += 3;
if (playerMoveDirection.ToUpper().Equals("UP"))
{
finishX = startX;
finishY = startY - diceValue;
}
else if (playerMoveDirection.ToUpper().Equals("DOWN"))
{
finishX = startX;
finishY = startY + diceValue;
}
else if (playerMoveDirection.ToUpper().Equals("LEFT"))
{
finishX = startX - diceValue;
finishY = startY;
}
else if (playerMoveDirection.ToUpper().Equals("RIGHT"))
{
finishX = startX + diceValue;
finishY = startY;
}
}
有什么想法吗? :( 谢谢,
【问题讨论】:
标签: c# function procedures