将 C++ 函数转换为 C#
Converting C++ function to C#
我正在尝试将 C++ 函数转换为 C#,但我连续第二个小时都失败了。需要帮助:/ 该函数取自 this 问题
bool haswon(unsigned __int64 newboard)
{
unsigned __int64 y = newboard & (newboard >> 6);
if (y & (y >> 2 * 6)) // check \ diagonal
return true;
y = newboard & (newboard >> 7);
if (y & (y >> 2 * 7)) // check horizontal -
return true;
y = newboard & (newboard >> 8);
if (y & (y >> 2 * 8)) // check / diagonal
return true;
y = newboard & (newboard >> 1);
if (y & (y >> 2)) // check vertical |
return true;
return false;
}
这是我的 C# 之一:
bool HasWon(ulong newboard)
{
ulong y = newboard & (newboard >> 6);
if ((y & (y >> 2 * 6)) > 0) // check \ diagonal
return true;
y = newboard & (newboard >> 7);
if ((y & (y >> 2 * 7)) > 0) // check horizontal -
return true;
y = newboard & (newboard >> 8);
if ((y & (y >> 2 * 7)) > 0) // check / diagonal
return true;
y = newboard & (newboard >> 1);
if ((y & (y >> 2 * 7)) > 0) // check vertical |
return true;
return false;
}
但是没用!看起来像是一件微不足道的事情,但我完全迷路了。感谢帮助
这看起来像是一个简单的 copy/paste 错误。您的最后两行没有将 y
移动 newboard
:
的两倍
private static bool isWon(ulong board)
{
// Check / diagonal
ulong y = board & (board >> 8);
if ((y & (y >> 2 * 8)) > 0) return true;
// Check - horizontal
y = board & (board >> 7);
if ((y & (y >> 2 * 7)) > 0) return true;
// Check \ diagonal
y = board & (board >> 6);
if ((y & (y >> 2 * 6)) > 0) return true;
// Check | vertical
y = board & (board >> 1);
if ((y & (y >> 2)) > 0) return true;
return false;
}
我正在尝试将 C++ 函数转换为 C#,但我连续第二个小时都失败了。需要帮助:/ 该函数取自 this 问题
bool haswon(unsigned __int64 newboard)
{
unsigned __int64 y = newboard & (newboard >> 6);
if (y & (y >> 2 * 6)) // check \ diagonal
return true;
y = newboard & (newboard >> 7);
if (y & (y >> 2 * 7)) // check horizontal -
return true;
y = newboard & (newboard >> 8);
if (y & (y >> 2 * 8)) // check / diagonal
return true;
y = newboard & (newboard >> 1);
if (y & (y >> 2)) // check vertical |
return true;
return false;
}
这是我的 C# 之一:
bool HasWon(ulong newboard)
{
ulong y = newboard & (newboard >> 6);
if ((y & (y >> 2 * 6)) > 0) // check \ diagonal
return true;
y = newboard & (newboard >> 7);
if ((y & (y >> 2 * 7)) > 0) // check horizontal -
return true;
y = newboard & (newboard >> 8);
if ((y & (y >> 2 * 7)) > 0) // check / diagonal
return true;
y = newboard & (newboard >> 1);
if ((y & (y >> 2 * 7)) > 0) // check vertical |
return true;
return false;
}
但是没用!看起来像是一件微不足道的事情,但我完全迷路了。感谢帮助
这看起来像是一个简单的 copy/paste 错误。您的最后两行没有将 y
移动 newboard
:
private static bool isWon(ulong board)
{
// Check / diagonal
ulong y = board & (board >> 8);
if ((y & (y >> 2 * 8)) > 0) return true;
// Check - horizontal
y = board & (board >> 7);
if ((y & (y >> 2 * 7)) > 0) return true;
// Check \ diagonal
y = board & (board >> 6);
if ((y & (y >> 2 * 6)) > 0) return true;
// Check | vertical
y = board & (board >> 1);
if ((y & (y >> 2)) > 0) return true;
return false;
}