import java.util.*; public class WordSearch { private char[][] board; private int numRows, numCols; Scanner s = new Scanner(new File("words")); public WordSearch(int rows, int cols) { board = new char[rows][cols]; for (int i=0;i<rows;i++) { for (int j=0;j<cols;j++) { board[i][j]='-'; } } this.numRows = rows; this.numCols = cols; } public WordSearch() { this(20,20); } public String toString() { String s=""; for (int i=0;i<board.length;i++) { for (int j=0;j<board[i].length;j++) { s=s+board[i][j]; } s=s+"\n"; } return s; } public boolean addWordH(int row, int col, String word){ int i,j; if (row < 0 || col < 0 || col > numCols || row + word.length() > numRows){ return false; } for (i = 0; i < word.length(); i++){ if (board[row][col+i] != '-' && board[row][col+i] != word.charAt(i)){ return false; } } for (j = 0; j < word.length(); j++){ board[row][col+j] = word.charAt(j); } return true; } public boolean addWordV(int row, int col, String word){ int i,j; if (row < 0 || col < 0 || col > numCols || col + word.length() > numCols){ return false; } for (i = 0; i < word.length(); i++){ if (board[row+i][col] != '-' && board[row+i][col] != word.charAt(i)){ return false; } } for (j = 0; j < word.length(); j++){ board[row+j][col] = word.charAt(j); } return true; } public boolean backAddWordH(int row, int col, String word){ int i,j; if (row < 0 || col < 0 || col > numCols || row - word.length() < 0){ return false; } for (i = 0; i < word.length(); i++){ if (board[row][col-i] != '-' && board[row][col-i] != word.charAt(i)){ return false; } } for (j = 0; j < word.length(); j++){ board[row][col-j] = word.charAt(j); } return true; } public boolean backAddWordV(int row, int col, String word){ int i,j; if (row < 0 || col < 0 || col > numCols || col - word.length() < 0){ return false; } for (i = 0; i < word.length(); i++){ if (board[row-i][col] != '-' && board[row-i][col] != word.charAt(i)){ return false; } } for (j = 0; j < word.length(); j++){ board[row-j][col] = word.charAt(j); } return true; } public boolean diagSEaddWordH(int row, int col, String word){ int i,j; if (row < 0 || col < 0 || col > numCols || row + word.length() > numRows || col + word.length() > numCols){ return false; } for (i = 0; i < word.length(); i++){ if (board[row+i][col+i] != '-' && board[row+i][col+i] != word.charAt(i)){ return false; } } for (j = 0; j < word.length(); j++){ board[row+j][col+j] = word.charAt(j); } return true; } public boolean diagNEaddWordH(int row, int col, String word){ int i,j; if (row < 0 || col < 0 || col > numCols || row - word.length() < 0 || col + word.length() > numCols){ return false; } for (i = 0; i < word.length(); i++){ if (board[row-i][col+i] != '-' && board[row-i][col+i] != word.charAt(i)){ return false; } } for (j = 0; j < word.length(); j++){ board[row-j][col+j] = word.charAt(j); } return true; } public boolean diagNWaddWordH(int row, int col, String word){ int i,j; if (row < 0 || col < 0 || col > numCols || row - word.length() < 0 || col - word.length() < 0){ return false; } for (i = 0; i < word.length(); i++){ if (board[row-i][col-i] != '-' && board[row-i][col-i] != word.charAt(i)){ return false; } } for (j = 0; j < word.length(); j++){ board[row-j][col-j] = word.charAt(j); } return true; } public boolean diagSWaddWordH(int row, int col, String word){ int i,j; if (row < 0 || col < 0 || col > numCols || row + word.length() > numRows || col - word.length() < 0){ return false; } for (i = 0; i < word.length(); i++){ if (board[row+i][col-i] != '-' && board[row+i][col-i] != word.charAt(i)){ return false; } } for (j = 0; j < word.length(); j++){ board[row+j][col-j] = word.charAt(j); } return true; } public void fillOutBoard(){ String letters = "abcdefghijklmnopqrstuvwxyz"; Random Rand = new Random(); for (int i = 0; i < numRows; i++){ for (int j = 0; j < numCols; j++){ if (board[i][j] == '-'){ board[i][j] = letters.charAt(Rand.nextInt(26)); } } } } }