diff --git a/README.md b/README.md new file mode 100644 index 0000000..36aec7c --- /dev/null +++ b/README.md @@ -0,0 +1,95 @@ +# Word Search Generator & Player + +A Python GUI application for generating and playing interactive word search puzzles with PDF export capability. + +## Features + +- **Interactive Puzzle Generation**: Create custom word search puzzles with configurable grid dimensions (5-25 x 5-25) +- **Drag-to-Select Gameplay**: Click and drag across letters to find words +- **Visual Feedback**: + - Blue highlighting for selected letters + - Green highlighting for found words + - Strikethrough on found words in the word list +- **PDF Export**: Export puzzles to PDF format for printing +- **Smart Word Placement**: + - 8-directional word placement (horizontal, vertical, and diagonal in all directions) + - Words can appear forwards or backwards + - Duplicate word prevention +- **Auto-Resizing Window**: Automatically adjusts to fit the generated puzzle +- **Clean PDF Output**: Grid lines removed for a professional appearance + +## Requirements + +- Python 3.x +- tkinter (usually included with Python) +- reportlab + +## Installation + +1. Clone the repository: +```bash +git clone https://git.firebugit.com/ksmith/WordSearch.git +cd WordSearch +``` + +2. Install required dependencies: +```bash +pip install reportlab +``` + +## Usage + +Run the application: +```bash +python word_search_generator.py +``` + +### Creating a Puzzle + +1. Enter the desired grid dimensions (Width and Height) +2. Enter words to include in the puzzle (one per line) +3. Click "Generate & Play" to create the puzzle + +### Playing the Game + +1. Click and drag across letters to select a word +2. Release to check if the selection matches a word +3. Found words turn green and are crossed off the list +4. Use "Clear Selection" to reset your current selection + +### Exporting to PDF + +1. Generate a puzzle +2. Click "Export to PDF" +3. Choose a location to save the file + +## How Words Are Placed + +- Words can appear in 8 directions: + - Horizontal (left-to-right or right-to-left) + - Vertical (top-to-bottom or bottom-to-top) + - Diagonal (all 4 diagonal directions) +- Words are placed randomly without duplicates +- Empty cells are filled with random letters + +## Default Settings + +- Default grid size: 12x12 +- Default words: PYTHON, GUI, WORDSEARCH, GAME, PUZZLE, FUN +- Cell size: 30 pixels +- Grid dimensions: 5-25 (minimum-maximum) + +## Technical Details + +- Built with Python tkinter for the GUI +- Canvas-based interactive grid for responsive drag selection +- ReportLab for PDF generation +- Event-driven architecture for mouse interactions + +## License + +Created by Keith Smith + +## Contributing + +This is a personal project. For issues or suggestions, please contact the repository owner.