我正在玩家和电脑之间构建一个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
答案 0 :(得分:2)
使用LINQ:
if(elements.GroupBy(e=>e).Max(g=>g.Count())>=4)
...
GroupBy
将相等的值组合在一起(作为IGrouping的集合),Max(g=>g,Count())
返回最大组中的项目数。
答案 1 :(得分:0)
C#风格的伪代码,
wins
一组获胜组合数组(按位置),例如[[0,1,2,3],[1,2,3,4],...]
board
单个数组的字符(例如),25个方格(5x5)。例如每个方格可以是'','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;
}