Полагаю, вы спрашиваете, как определить закономерности состояния игры.Я определяю 3 состояния игры, это: ничья (0), победа (1) и неопределенность (2).Пока игра ведется, а условие выигрыша или проигрыша не определено, состояние игры не определяется.Ваша задача полностью заключается в создании алгоритма оценки состояния игры.И это становится немного сложным в деталях.Что бы вы ни спрашивали, решение проблемы осуществляется способом, приведенным ниже.Если вам нужны дальнейшие объяснения, не стесняйтесь обратной связи.
Решение состоит из двух операций.Первая операция сканирует матрицу в заданных начальных координатах для условия выигрыша.Вторая операция генерирует все начальные координаты для первой операции.
Это то, что упоминается как первая операция, и возвращает значения, как определено выше:
int evaluateSection(int startPosX, int startPosY)
{
int firstVal;
boolean emptyExists = false;
for(int i=0;i<2;i++)
{
for(int j=0;j<2;j++)
{
if(i==0 && j==0)
firstVal = matrix[startPosX + i][startPosY + j];
else if(firstVal == 0)
{
firstVal = matrix[startPosX + i][startPosY + j];
emptyExists = true;
}
else if(matrix[startPosX + i][startPosY + j] !=0 && matrix[startPosX + i][startPosY + j] !=firstVal)
return 0;
else if(matrix[startPosX + i][startPosY + j] ==0)
emptyExists = true;
}
}
if(emptyExists==false)
return 1;
else
return 2;
}
Вторая операция сканирует все разделы в игровой области и использует первуюоперация:
int result()
{
int tmp,res=0;
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
{
tmp=evaluateSection(i,j);
if(tmp==0 && res!=2)
res=0;
if(tmp==1)
{
return 1;
}
else if(tmp==2)
{
res=2;
}
}
return res;
}
Как видите, все усложняется.Но алгоритм таков.Попробуй.