Пример #1
0
int score(int dimension, char board[26][26], char colour, int i, int j){
    int score=0;
    char diffColour;
    int numRow, numCol;
    char row, col;
    row = 'a'+i;
    col = 'a'+j;
    if (colour == 'W')
        diffColour ='B';
    if (colour == 'B')
        diffColour = 'W';
    int deltaRow, deltaCol;
    for(deltaRow=-1;deltaRow<=1;deltaRow++){
        for(deltaCol=-1;deltaCol<=1;deltaCol++){
            if((deltaRow!=0)||(deltaCol!=0)){
                if (checkLegalInDirection(board, dimension, row, col, colour, deltaRow, deltaCol)==true){
                    numRow = i;
                    numCol = j;
                    numRow+=deltaRow;
                    numCol+=deltaCol;
                    while(board[numRow][numCol]==diffColour){
                        score++;
                        numRow+=deltaRow;
                        numCol+=deltaCol;
                    }
                }
            }
        }
    }
    return score;
}
Пример #2
0
int score(int dimension, char board[26][26], char colour, int i, int j){
    int score=0;
    char diffColour;
    int numRow, numCol;
    char row, col;
    bool legal = false;
    row = 'a'+i;
    col = 'a'+j;
    if (colour == 'W')
        diffColour ='B';
    if (colour == 'B')
        diffColour = 'W';
    int deltaRow, deltaCol;
    for(deltaRow=-1;deltaRow<=1;deltaRow++){
        for(deltaCol=-1;deltaCol<=1;deltaCol++){
            if((deltaRow!=0)||(deltaCol!=0)){
                if (checkLegalInDirection(board, dimension, row, col, colour, deltaRow, deltaCol)==true){
                    legal = true;
                    numRow = i;
                    numCol = j;
                    numRow += deltaRow;
                    numCol += deltaCol;
                    while (board[numRow][numCol] == diffColour){
                        score ++;
                        numRow += deltaRow;
                        numCol += deltaCol;
                    }
                }
            }
        }
    }
    if(legal == true){
        if (firstCircle(dimension, board, i, j) == true){
            if (strategyCorner(dimension, board, i, j) == true)
                score+=1000;
            else if ((i = 1)||(i = dimension-2)||(j = 1)||(j = dimension-2))
                score-=100;
            else 
                score+=100;
        }
        else if (secondCircle(dimension, board, i, j) == true){
            if (strategyStar(dimension, board, i, j) == true)
                score-=1000;
            else
                score+=50;
        }
        else if (thirdCircle(dimension, board, i,j) == true){
            score+=50;
        }
        else{
            
        }
    }
    else
        score = 0;
    return score;
}
Пример #3
0
void flipAllAfterLegal(int dimension, char board[26][26], char colour, char row, char col){
    int deltaRow, deltaCol;
    for(deltaRow=-1;deltaRow<=1;deltaRow++){
        for(deltaCol=-1;deltaCol<=1;deltaCol++){
            if ((deltaRow!=0)||(deltaCol!=0)){
                if (checkLegalInDirection(board, dimension, row, col, colour, deltaRow, deltaCol) == true){
                    flip(dimension, board, colour, row, col, deltaRow, deltaCol);
                }
            }
        }
    }
}
Пример #4
0
bool checkLegalInPosition(char board[26][26], int n, int row, int col, 
        char colour){
    int deltaRow, deltaCol;
    for(deltaRow = -1; deltaRow <= 1; deltaRow++){
        for(deltaCol = -1; deltaCol <= 1; deltaCol++){
            if(deltaCol != 0 || deltaRow != 0){
                if(checkLegalInDirection(board, n, row, col, colour, deltaRow, deltaCol)){
                    return true;
                }
            }
        }
    }
    return false;
}
Пример #5
0
void makeMove(char board[26][26], int n, int row, int col, char colour){
    if(checkLegalInPosition(board, n, row, col, colour)){
        int deltaRow, deltaCol;
        for(deltaRow = -1; deltaRow <= 1; deltaRow++){
            for(deltaCol = -1; deltaCol <= 1; deltaCol++){
                if(deltaCol != 0 || deltaRow != 0){
                    if(checkLegalInDirection(board, n, row, col, colour, deltaRow, deltaCol)){
                        makeMoveInDirection(board, n, row, col, colour, deltaRow, deltaCol);
                    }
                }
            }    
        }
        board[row][col] = colour;
    }
    else 
        printf("\nInvalid move.\n");
}
Пример #6
0
bool checkLegal(int dimension, char board[26][26], char row, char col, char colour){
    bool legal = false;
    int deltaRow, deltaCol;
    if (positionInBounds(dimension, row, col)==false){
        return legal;
    }
    if (board[row-'a'][col-'a']!='U')
        return legal;
    for(deltaRow=-1;deltaRow<=1;deltaRow++){
        for(deltaCol=-1;deltaCol<=1;deltaCol++){
            if ((deltaRow!=0)||(deltaCol!=0)){
                if (checkLegalInDirection(board, dimension, row, col, colour, deltaRow, deltaCol) == true){
                    legal = true;
                }
            }
        }
    }
    return legal;
}