السلام عليكم
المطلوب برمجة لعبة connect four
http://en.wikipedia.org/wiki/Connect_Four
قمت بتمثيل لوح اللعبة board بمصفوفة ذات بعدين
array[6][7] which takes int values -1, 0 or 1
الارقام للتفريق بين كرات اللاعب1 واللاعب2 وبين الاماكن الفارغة
بعد كل لعبة لابد من فحص المصفوفة ومعرفة ما اذا كان هناك اربعة كرات (1 او 0 او -1 ) متصلة او لا ، عندما يكون هناك اربع كرات متصلة اقوم بارجاع true
الدالة التي تقوم بهذا هي
findFourConnected وتاخذ المصفوفة كمدخل وترجع boolean value
خوارزميه البحث عقدتني جداً ، هل اقوم بكتابة for-loop داخل for-loop ؟ او اكتب if-statements لكل خلية ، هذا يعني تقريباً اكثر من 42 if-statements !!
انا محتار جداً لا ما افعل
لو قمت باستخدام for-loop inside for-loop والمرور على كل خلية ، بعدها ما افعل عندما اجد مثلا -1 ؟ او 0 ؟ او 1 ؟؟
مثلا هنا حاولت اخذ كل اربع خلايا مع بعض والعامود الاخير يكون له حاله خاصة ، لكن :S
bool findFourConnected( Node board, TURN turn )
{
if ( turn == PLAYER1 )
{
for ( int i=0; i < ROW; i++ )
for ( int j=0; j < COL; j++ )
if ( j != 6 )
{
if ( board.array[j] == -1
&& board.array[j+1] != -1
&& board.array[i+1][j+1] != -1
&& board.array[i+1][j] != -1 )
j++;
else
if ( board.array[j] == -1 && board.array[j+1] == -1 )
for ( )
}
else
{
}
}
else if ( turn == PLAYER2 )
{
}
else
cout <<"Error!\n";
}