我正在玩家和计算机之间构建一个5x5的tic tac toe游戏,我遇到了计算机将查看玩家移动的部分,如果玩家已经有4个,我决定阻止他的获胜回合。所以我知道它应该是一个for循环,但我在实现它时遇到了问题。查找数组的最好方法是什么,该数组将包含4个元素,以检查其中5个元素中是否有4个元素相同?通常我会执行if else语句,但在这种情况下,if else应该是冗长乏味的。
下面是我的伪代码
for (int i = 0; i < rowSize; i++)
{
if(any 4 out of 5 elements are equal)
{
block it;
}
}PS:我有一个获胜的5x5组合数组,它的行大小是12
发布于 2014-03-12 08:10:32
使用LINQ:
if(elements.GroupBy(e=>e).Max(g=>g.Count())>=4)
...GroupBy将相等的值组合在一起(作为IGrouping的集合),Max(g=>g,Count())返回最大组中的项目数。
发布于 2014-03-12 08:23:18
C#样式的伪代码,
wins获胜组合数组(按位置),例如[0,1,2,3,1,2,3,4,...]
用25个方块(5x5) board一个字符数组(例如)。例如,每个正方形可以是‘’、'X‘或'O’
例如,player可以是'X‘或'O’。
这是检查玩家是否获胜的算法。
bool checkWin(char player)
{
foreach (win in wins)
{
int count = 0;
foreach(sq in win)
{
if (board[sq] == player)
count++;
}
if (count == 4) return true;
}
return false;
}https://stackoverflow.com/questions/22339247
复制相似问题