[英]Converting C++ function to C#
I'm trying to convert c++ funtion to c#, but I'm failing for the second straight hour. 我正在尝试将c ++函数转换为c#,但是连续第二个小时都失败了。 Need help:/ The function is taken from this question
需要帮助:/该功能取自这个问题
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;
}
Here's my c# one: 这是我的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;
}
But It doesn't work! 但这不起作用! Looks like a trivial thing, but I'm totally lost.
看起来很琐碎,但我完全迷失了。 Thanks for help
感谢帮助
It looks like a simple copy/paste error. 它看起来像一个简单的复制/粘贴错误。 Your last two lines were not shifting
y
by twice the amount of newboard
: 您的最后两行的
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;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.