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; }
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; }
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); } } } } }
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; }
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"); }
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; }