我正在使用OpenGL和C ++开发一款俄罗斯方块式游戏,如果你匹配相同颜色的3个瓷砖,它们就会消失。现在我正在处理这个函数,该函数识别连续三个是否有相同的颜色。我正在创建一个Array
来获取每个网格的颜色,并确定是否有3种匹配的颜色。
我在比较每个数组中的颜色方面遇到了问题。出于某种原因,(rowcolours[j]) == rowcolours[j+1])
总是在值相同时变为假。
//Global variable
vec4 boardcolours[1200];
//---------------------------------------
void check3match()
{
vec4 rowcolours[10]; // initializes array to be filled
for (int i = 0; i < 10; i++)
{
rowcolours[i] = boardcolours[(6*i)+1]; // fill array with color values
//visual aid to determine if values are equal. This shows up.
cout << "Row" << i+1 <<" : " << rowcolours[i] << " - " << boardcolours[(6*i)+1] << endl;
}
for (int j = 0; j < 8; j++)
{
if ((rowcolours[j]) == rowcolours[j+1]) && (rowcolours[j+1] == rowcolours[j+2]))
{
// another visual aid, I'm not seeing this :(
cout << "Row" << j+1 << " = " << j+2<< " = " << j+3 << endl;
}
}
}
示例输出: 第1行:(0,1,0,1) 第2行:(0,1,0,1) 第3行:(0,1,0,1) 第4行:(1,1,0,1) 第5行:......
我很困惑为什么这不起作用。我使用错误的比较运算符吗?我不熟悉C ++和OpenGL,也不知道如何比较这两个数组。非常感谢你提前。