Beispiel #1
0
bool checkLegalInDirection(char board[26][26], int n, int row, int col, 
        char colour, int deltaRow, int deltaCol){ 
    int i;
    if(positionInBounds(n, row, col)){
        if(board[row][col] == 'U'){
            //position is on the board and is unoccupied
            if(positionInBounds(n, row + deltaRow, col + deltaCol)){
                if(board[row + deltaRow][col + deltaCol] != colour 
                        && board[row + deltaRow][col + deltaCol] != 'U'){
                    for(i = 1; (positionInBounds(n, row + i*deltaRow, col + i*deltaCol)) && (board[row + deltaRow*i][col + deltaCol*i] != 'U'); i++){
                        if(board[row + deltaRow*i][col + deltaCol*i] == colour){
                            return true;
                        }
                    }
                }     
            }
        }
    }
    return false;
}
Beispiel #2
0
//receives board as input from the user
void getBoard(char board[26][26], int n){
    char colour;
    char row, col;
    printf("Enter board configuration:\n");
    
    scanf(" %c%c%c", &colour, &row, &col);
    while(colour != '!' && row != '!' && col != '!'){
        if(positionInBounds(n, row - 'a', col - 'a'))
            board[row - 'a'][col - 'a'] = colour;
        scanf(" %c%c%c", &colour, &row, &col);
    }
    
}
Beispiel #3
0
int tilesInDirection(char board[26][26], int n, char colour, int row, int col, 
        int deltaRow, int deltaCol){
    int i, flips;
    flips = 0;
    if(positionInBounds(n, row, col)){
        if(board[row][col] == 'U'){
            //position is on the board and is unoccupied
            if(positionInBounds(n, row + deltaRow, col + deltaCol)){
                if(board[row + deltaRow][col + deltaCol] != colour 
                        && board[row + deltaRow][col + deltaCol] != 'U'){
                    for(i = 1; (positionInBounds(n, row + i*deltaRow, col + i*deltaCol)) && (board[row + deltaRow*i][col + deltaCol*i] != 'U'); i++){
                        if(board[row + deltaRow*i][col + deltaCol*i] == colour){
                            return flips;
                        }
                        flips++;
                    }
                }     
            }
        }
    }
    return 0;
}
Beispiel #4
0
void makeMoveInDirection(char board[26][26], int n, int row, int col, 
        char colour, int deltaRow, int deltaCol){ 
    int i;
    
    for(i = 1; positionInBounds(n, row + i*deltaRow, col + i*deltaCol) && board[row + deltaRow*i][col + deltaCol*i] != 'U'; i++){
        if(board[row + deltaRow*i][col + deltaCol*i] != colour){
            board[row + deltaRow*i][col + deltaCol*i] = colour;
        }
        else if(board[row + deltaRow*i][col + deltaCol*i] == colour){
            return; 
        }
    } 
}
Beispiel #5
0
int edgeScorer(char board[26][26], int n, int row, int col){
    int score = 7; 
    int deltaRow, deltaCol;
    for(deltaRow = -1; deltaRow <= 1; deltaRow++){
        for(deltaCol = -1; deltaCol <= 1; deltaCol++){
            if(deltaRow != 0 || deltaCol != 0)
                if(positionInBounds(n, row + deltaRow, col + deltaCol))
                    if(board[row + deltaRow][col + deltaCol] == 'U')
                        score--;
        }
    }
    return score;
    
}
Beispiel #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;
}