import java.util.*; public class WordSearch { private char[][] board; 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]='-'; } } } 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 r, int c, String word, String dir) { if (dir.equals("right")) { if ((board[r].length - c) < word.length()){ return false; } else { for (int i=0;i<word.length();i++) { if (!(word.charAt(i) == board[r][c+i] || board[r][c+i]=="-".charAt(0))) return false; } } for (int i=0;i<word.length();i++) { board[r][c+i] = word.charAt(i); } return true; } else if (dir.equals("left")) { if (c < word.length()){ return false; } else { for (int i=0;i<word.length();i++) { if (!(word.charAt(i) == board[r][c-i] || board[r][c-i]=="-".charAt(0))) return false; } } for (int i=0;i<word.length();i++) { board[r][c-i] = word.charAt(i); } return true; } else { System.out.println("Please put right or left."); return false; } } public boolean addWordV (int r, int c, String word, String dir) { if (dir.equals("up")) { if (r < word.length()){ return false; } else { for (int i=0;i<word.length();i++) { if (!(word.charAt(i) == board[r-i][c] || board[r-i][c] == "-".charAt(0))) return false; } } for (int i=0;i<word.length();i++) { board[r-i][c] = word.charAt(i); } return true; } else if (dir.equals("down")) { if (board.length-r < word.length()){ return false; } else { for (int i=0;i<word.length();i++) { if (!(word.charAt(i) == board[r+i][c] || board[r+i][c]=="-".charAt(0))){ return false; } } } for (int i=0;i<word.length();i++) { board[r+i][c] = word.charAt(i); } return true; } else { System.out.println("Please type up or down"); return false; } } public boolean addWordD (int r, int c, String word, String dir) { if (dir.equals("up right")) { if (r < word.length() && board[r].length - c < word.length()) { return false; } else { for (int i=0;i<word.length();i++) { if (!(word.charAt(i) == board[r-i][c+i] || board[r-i][c+i]=="-".charAt(0))) return false; } } for (int i=0;i<word.length();i++) { board[r-i][c+i] = word.charAt(i); } return true; } else if (dir.equals("down right")) { if (board.length - r < word.length() && board[r].length - c < word.length()) { return false; } else { for (int i=0;i<word.length();i++) { if (!(word.charAt(i) == board[r+i][c+i] || board[r+i][c+i]=="-".charAt(0))) return false; } } for (int i=0;i<word.length();i++) { board[r+i][c+i] = word.charAt(i); } return true; } else if (dir.equals("up left")) { if (r < word.length() && c < word.length()) { return false; } else { for (int i=0;i<word.length();i++) { if (!(word.charAt(i) == board[r-i][c-i] || board[r-i][c-i]=="-".charAt(0))) return false; } } for (int i=0;i<word.length();i++) { board[r-i][c-i] = word.charAt(i); } return true; } else if (dir.equals("down left")) { if (board.length - r < word.length() && c < word.length()) { return false; } else { for (int i=0;i<word.length();i++) { if (!(word.charAt(i) == board[r+i][c-i] || board[r+i][c-i]=="-".charAt(0))) return false; } } for (int i=0;i<word.length();i++) { board[r+i][c-i] = word.charAt(i); } return true; } else { System.out.println("Please type up right, up left, down right, or down left"); return false; } } public char randomLetter() { Random r = new Random(); return (char)(r.nextInt(25)+97); } public void fillUp() { for (int i=0;i<board.length;i++) { for (int j=0;j<board[i].length;j++) { if (board[i][j]=="-".charAt(0)) board[i][j] = randomLetter(); } } } }