Пример #1
0
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;
}
Пример #2
0
// 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;
}