int GameBoard::CheckForWinner() const { int winner = 0; for (int i = 0; i != 3; ++i) for (int j = 0; j != 3; ++j) { if ((i % 2 || j % 2)) { winner = CheckTile(boarder, i, j); if (winner) { return winner; } } } return winner; }
// returns maximum possible gain by moving n spaces in each direction int getHighest(int spaces, int Xcrd, int Ycrd, int NumOfRows, int NumOfCols, int FishArray[NumOfRows][NumOfCols], int AllPengs, int PengArray[AllPengs][3]) { int Highest = 0; int NE_val, E_val, SE_val, SW_val, W_val, NW_val; int X_crd2, Y_crd2; if(Xcrd%2) { X_crd2 = Xcrd - spaces; Y_crd2 = Ycrd + spaces/2; if(X_crd2 > 0 && Y_crd2 > 0 && X_crd2 < NumOfRows && Y_crd2 < NumOfCols && CheckTile(X_crd2, Y_crd2, NumOfCols, FishArray, AllPengs, PengArray) == 1) { NE_val = FishArray[X_crd2][Y_crd2]; } else { NE_val = 0; } X_crd2 = Xcrd; Y_crd2 = Ycrd + spaces; if(X_crd2 > 0 && Y_crd2 > 0 && X_crd2 < NumOfRows && Y_crd2 < NumOfCols && CheckTile(X_crd2, Y_crd2, NumOfCols, FishArray, AllPengs, PengArray) == 1) { E_val = FishArray[X_crd2][Y_crd2]; } else { E_val = 0; } X_crd2 = Xcrd + spaces; Y_crd2 = Ycrd + spaces/2; if(X_crd2 > 0 && Y_crd2 > 0 && X_crd2 < NumOfRows && Y_crd2 < NumOfCols && CheckTile(X_crd2, Y_crd2, NumOfCols, FishArray, AllPengs, PengArray) == 1) { SE_val = FishArray[X_crd2][Y_crd2]; } else { SE_val = 0; } X_crd2 = Xcrd + spaces; Y_crd2 = Ycrd - spaces/2 - 1; if(X_crd2 > 0 && Y_crd2 > 0 && X_crd2 < NumOfRows && Y_crd2 < NumOfCols && CheckTile(X_crd2, Y_crd2, NumOfCols, FishArray, AllPengs, PengArray) == 1) { SW_val = FishArray[X_crd2][Y_crd2]; } else { SW_val = 0; } X_crd2 = Xcrd; Y_crd2 = Ycrd - spaces; if(X_crd2 > 0 && Y_crd2 > 0 && X_crd2 < NumOfRows && Y_crd2 < NumOfCols && CheckTile(X_crd2, Y_crd2, NumOfCols, FishArray, AllPengs, PengArray) == 1) { W_val = FishArray[X_crd2][Y_crd2]; } else { W_val = 0; } X_crd2 = Xcrd - spaces; Y_crd2 = Ycrd - spaces/2 - 1; if(X_crd2 > 0 && Y_crd2 > 0 && X_crd2 < NumOfRows && Y_crd2 < NumOfCols && CheckTile(X_crd2, Y_crd2, NumOfCols, FishArray, AllPengs, PengArray) == 1) { NW_val = FishArray[X_crd2][Y_crd2]; } else { NW_val = 0; } } else { X_crd2 = Xcrd - spaces; Y_crd2 = Ycrd + spaces/2 + 1; if(X_crd2 > 0 && Y_crd2 > 0 && X_crd2 < NumOfRows && Y_crd2 < NumOfCols && CheckTile(X_crd2, Y_crd2, NumOfCols, FishArray, AllPengs, PengArray) == 1) { NE_val = FishArray[X_crd2][Y_crd2]; } else { NE_val = 0; } X_crd2 = Xcrd; Y_crd2 = Ycrd + spaces; if(X_crd2 > 0 && Y_crd2 > 0 && X_crd2 < NumOfRows && Y_crd2 < NumOfCols && CheckTile(X_crd2, Y_crd2, NumOfCols, FishArray, AllPengs, PengArray) == 1) { E_val = FishArray[X_crd2][Y_crd2]; } else { E_val = 0; } X_crd2 = Xcrd + spaces; Y_crd2 = Ycrd + spaces/2 + 1; if(X_crd2 > 0 && Y_crd2 > 0 && X_crd2 < NumOfRows && Y_crd2 < NumOfCols && CheckTile(X_crd2, Y_crd2, NumOfCols, FishArray, AllPengs, PengArray) == 1) { SE_val = FishArray[X_crd2][Y_crd2]; } else { SE_val = 0; } X_crd2 = Xcrd + spaces; Y_crd2 = Ycrd - spaces/2; if(X_crd2 > 0 && Y_crd2 > 0 && X_crd2 < NumOfRows && Y_crd2 < NumOfCols && CheckTile(X_crd2, Y_crd2, NumOfCols, FishArray, AllPengs, PengArray) == 1) { SW_val = FishArray[X_crd2][Y_crd2]; } else { SW_val = 0; } X_crd2 = Xcrd; Y_crd2 = Ycrd - spaces; if(X_crd2 > 0 && Y_crd2 > 0 && X_crd2 < NumOfRows && Y_crd2 < NumOfCols && CheckTile(X_crd2, Y_crd2, NumOfCols, FishArray, AllPengs, PengArray) == 1) { W_val = FishArray[X_crd2][Y_crd2]; } else { W_val = 0; } X_crd2 = Xcrd - spaces; Y_crd2 = Ycrd - spaces/2; if(X_crd2 > 0 && Y_crd2 > 0 && X_crd2 < NumOfRows && Y_crd2 < NumOfCols && CheckTile(X_crd2, Y_crd2, NumOfCols, FishArray, AllPengs, PengArray) == 1) { NW_val = FishArray[X_crd2][Y_crd2]; } else { NW_val = 0; } } Highest = max_6(NE_val, E_val, SE_val, SW_val, W_val, NW_val); return Highest; }