我正在制作棋盘游戏,我只是想知道如何搜索数组以找到一个元素(在这种情况下让它命名为N),并且每次计算N时,柜台上升一个。如果N将一侧连接到另一侧,则玩家获胜。 该解决方案仅适用于阵列的一行,因此计数器在每个阵列开始时复位。迭代。
void board::winner(int x, int y)
{
int count = 0;
for (int i = 0; i < col; i++)
{
count = 0;
for (int j = 0; j < row; xaxis++)
{
if (arr[i][j] == 'N')
{
count++;
}
}
if (count == col) // == to col because we are testing straight lines
{
cout << "P2 wins!";
}
}
答案 0 :(得分:0)
count
的初始化移至第一个for
循环之上。if
循环结束后移动for
语句。 void board :: winner(int x,int y)
{
int count = 0;
for (int i = 0; i < col; i++)
{
for (int j = 0; j < row; xaxis++)
{
if (arr[i][j] == 'N')
{
count++;
}
}
}
if (count == col)
{
cout << "P2 wins!";
}
}
通过在找到第一个副本后终止循环,可以使循环更有效:
for (int i = 0; i < col; ++i)
{
for (int j = 0; j < row; ++j)
{
if (arr[i][j] == 'N')
{
++count;
if (count > 1)
{
break;
}
}
}
if (count > 1)
{
break;
}
}
上述代码将在找到第一个副本后立即终止,因此不会搜索整个主板。